2013-02-18 6 views
2

slimphp 프레임 워크를 사용하고 있으며 내 라우팅 기능의 가변 범위에 대해 혼란 스럽습니다. 나는 다음과 같은 한 :PHP 사용 변수 범위

$app = new \Slim\Slim(array(
'templates.path' => '../templates/', 
'view' => new Slim\Extras\Views\Twig() 
)); 

$user = SES\Session::getInstance(); 

include 'routes.php'; 

$app->run(); 

// Routes.php

$app->get("/", function() use ($app, $user){ 
.... 
} 

Routes.php을 실패 내가 정상에 global $user;를 추가하지 않는 경우 : 왜에 액세스 할 수는

Notice: Undefined variable: user

입니다 $app var이 파일에 있지만 $user var에 액세스 할 수 없습니까?

+2

공지 참조 란 무엇입니까? 'routes.php' 내용을'include' 대신에 옮기면 어떨까요? – zerkms

+0

좋은 지적 @zerkms – Neal

+0

그 외의 코드가 $ app-> get() 호출을 둘러싸고 있습니까? 만약 함수 나 메소드 안에 있다면, 물론 $ user가 로컬에 정의되지 않을 것입니다. –

답변

1

문제점을 좁혀 냈습니다. 나는 실제로 'routes.php'를 포함하지 않는다; 폴더의 모든 경로를로드하는 유틸리티 함수가 있습니다. 내 부트 스트랩에서 이것을 호출합니다 : SES \ Util :: loadRoutes ('../ routes'); 이것은 dir을 읽고 $ filename을 요구하는 정적 함수입니다. 모든 파일에 대해. 나는이 함수 내에서 global $ app을 선언했기 때문에 과거에 이것을 처리했을 것이다. Sooo .. 내가 글로벌이라고 부를 필요가있을 때 나는 아직도 완전히 이해하지 못한다. 그러나 이것은 혼란의 일부를 해결한다!