2013-12-22 1 views
1

내 응용 프로그램의 모든 부분에서 액세스 할 수 있도록 내 모든 사용자 지정 컨트롤러와 모델 (Eloquent)을 내 응용 프로그램에 자동으로 포함하려고합니다. 내 슬림 프레임 워크 인덱스 파일에 나는이 두 foreach 루프가 이유슬림 프레임 워크가 자동으로 ORM 모델을 포함합니다

:

// Include all controllers 
    foreach(glob("controllers/*.php") as $controller) 
    { 
    include $controller; 
    } 

    // Include all models 
    //foreach(glob("models/*.php") as $model) 
    //{ 
    // include $model; 
    //} 

그러나이 문제를 내가 모든 모델과 내가 오류가 포함 루프 주로 두 번째를 만듭니다 C:\..\models\model name.php Cannot re-declare.. 방법 이 문제를 해결할 수 있습니까?

답변

3

작성자 (http://getcomposer.org)를 사용하여 응용 프로그램의 종속성을 강력하게 관리하는 것이 좋습니다. Composer가 제공하는 오토로더를 사용하여 클래스를 자동로드하고 직접 관리하지 않아도되므로이 문제를 완전히 피할 수 있습니다.

응용 프로그램에서 이러한 클래스에 액세스하기 위해 사용하는 키워드를 사용하여 경로에 Laravel의 용기를 전달합니다

$app->get('/', function() use ($app, $container) {}); 

이제 $ 응용 프로그램 인스턴스 아무것도에서 아무것도 액세스 할 수있어 당신의 경로에있는 $ 컨테이너.

+2

Corposer를 사용하면 좋은 점이 다음 프로젝트에서 사용됩니다. include 대신 include_once를 사용하여 문제점을 해결했습니다. –

0

include 대신 require_once을 사용해 보셨습니까? 이런 식으로 뭔가 : 당신이 클래스 컨트롤러 이름 User 또한 클래스 모델 이름 User이있는 경우

// Include all controllers 
foreach(glob("controllers/*.php") as $controller) 
{ 
    require_once $controller; 
} 

// Include all models 
foreach(glob("models/*.php") as $model) 
{ 
    require_once $model; 
} 

은 또한 그것의 클래스 이름을 확인합니다. 이런 것이 있다면 클래스 이름을 변경해야합니다. 같은 이름의 클래스를 등록 할 수 없습니다.(사용자 모듈 용 자원 컨트롤러) 및 UserModel (사용자 모듈 용 모델)과 같이 고유하고 장황한 항목을 만드십시오.

관련 문제