2016-07-05 4 views
1

저는 PHP로 첫 번째 큰 프로젝트를 만들고 싶습니다. Phalcon PHP를 사용하고 Phalcon Developer Tools를 사용하여 프로젝트 구조를 만들었습니다. 그것은 다음과 같습니다 : .PhalconPHP - 전역 함수 및 클래스

├── app 
│   ├── cache 
│   ├── config 
│   │   ├── config.php 
│   │   ├── loader.php 
│   │   └── services.php 
│   ├── controllers 
│   ├── migrations 
│   ├── models 
│   └── views 
├── index.html 
└── public 
    ├── css 
    ├── files 
    ├── img 
    ├── index.php 
    ├── js 
    └── temp 

나는 전역 기능과 클래스가 필요하다고 생각합니다. 나는 바보 변수 예를 Laravel의 DD 기능에 구현하고 내가 원하는 목적지

dd($value); 

처럼이 기능을 사용하고 싶습니다. 또한 정적 함수를 사용하기 위해 일부 글로벌 클래스를 만들고 싶습니다. 예 :

User::isLogged() 

내 프로젝트에서 이것을 구현하는 방법은 무엇입니까? 디렉토리 함수 또는 lib 만들기 또는 app /에서 indcude? 국제 대회입니까? 전역 클래스를 개별 폴더에 배치 하시겠습니까? 전역 함수와 클래스를 분리하고 표준 Phalcon 로더에 등록하고 전체 프로젝트에 대해 한 번 수행하는 방법은 무엇입니까?

+0

팔콘은 MVC 디자인 패턴을 사용합니다. * "전역 클래스"*는/app/models (예 :'User.php')의 모델입니다. 컨트롤러는/app/controller에 있으며 이름은 (예 :'SignupController.php')이고 뷰는/app/view 내의 하위 디렉토리 (예 :/app/view/signup)에 있습니다. /exex.phtml for www.example.com/signup/). 그것은 자습서를 통해 실행하는 것이 좋습니다. https://docs.phalconphp.com/en/latest/reference/tutorial.html – CD001

+0

@ CD001 작은 프로젝트에서 Phalcon을 사용했습니다. app/models에는 데이터베이스의 테이블을 나타내는 클래스가있었습니다. 이제 나는 다른 것을 이야기하고 있습니다. 어쩌면 사용자가 잘못된 예 였을 수도 있습니다. 나는 클래스와 함수에 대해 생각한다. Multimedia :: uploadImage() 또는 Captcha :: checkCaptcha. 그것은 db와 관련이없는 클래스입니다. 그리고 예제에서 dd 함수는 어떻게됩니까? – Robin71

+1

모델이 반드시 데이터베이스 테이블 (ORM 외부)과 관련 될 필요는 없습니다. 멀티미디어는 여전히 모델이 될 것입니다. 모델을 "물건"또는 비즈니스 프로세스를 모델링하는 것으로 생각하십시오 - 저는 이것이 유용한 도움이되는 것을 발견했습니다 : http://stackoverflow.com/questions/5863870/how-should-a-model-be-structured-in- mvc – CD001

답변

3

팔콘의 장점은 현재 상황에 가장 적합한 방식으로 프로젝트를 구성 할 수 있다는 것입니다.

대부분의 프로젝트에서 사용하고있는보다 일반적인 접근법은 가장 많이 사용되는 네임 스페이스를 오토로더에 등록하는 것입니다. 제 경우에는 다중 모듈 구조를 사용하고 있으며 이것은 주어진 모듈에 대한 Module.php 파일에서 수행됩니다.

모듈 클래스 : 내 경우에는

class Module 
{ 
    public function registerAutoloaders($di) 
    { 
     $config = $di->getConfig(); 
     $loader = new \Phalcon\Loader(); 
     $namespaces = [ 
      'Frontend\Controllers' => __DIR__ . '/controllers/', 
      'Frontend\Forms' => __DIR__ . '/forms/', 
      'Models' => $config->site->path->common . 'models/', 
      'Helpers' => $config->site->path->common . 'helpers/', 
     ]; 
     $loader->registerNamespaces($namespaces); 
     $loader->register(); 
    } 
} 

도우미가되지 모델입니다 특정 뭔가 역할을 파일입니다. 예를 들어 필자는 파일 시스템을 조작하기위한 함수를 보유한 파일 도우미를 가지고 있습니다. slugalization, latinization 등과 같은 문자열 연산을 처리 할 수있는 도우미가 있습니다 ...

또한 PHPMailer, BrowserDetect, ImageProcessing 라이브러리 등의 공용 라이브러리를 놓은 Lib 폴더도 있습니다.

이제 Laravel의 dd()과 같은 글로벌 기능에 대해 알아보십시오. 부트 스트랩 파일이나 index.php에 포함 된 작은 파일이 있습니다. 내가 디버깅을위한 하나 위와 같이, 어디서나 쉽게 사용하고자하는 많은 전역 함수가 아닌 내 경우

function d($what) 
{ 
    echo '<pre>'; 
    print_r($what); 
    die('</pre>'); 
} 

: 그것은 같은 1-2 전역 함수가 포함되어 있습니다. 위에서 언급 한 도우미 파일에 넣은 것들의 나머지 부분.

희망이 도움이되었고 그것에 대한 다른 사람의 의견을 듣게되어 기쁩니다.