2013-11-01 2 views
0

Silex 2에서 첫 번째 프로젝트 만들기 한 컨트롤러의 변수를 다른 컨트롤러에 사용하는 방법을 모르십시오.Silex 2의 다른 컨트롤러에서 변수 가져 오기

$app -> get('links', function() use ($app) { 
$foo="foo"; 
}) 
->bind('a1'); 


$app -> get ('/links/result/', function() use ($app) { 
echo $foo; 
}) 
->bind('b2'); 

"b2"에 $ foo를 표시하는 방법은 무엇입니까?

답변

4

두 개의 컨트롤러에서 작업해야하는 경우 최상의 서비스를 제공하십시오. 둘 다 사용할 수 있습니다. Here's the Silex docs 서비스 작성 중.

먼저 클래스 만들어야합니다 그런 다음

class MyFirstService 
{ 
    public function getFoo() 
    { 
     return "foo"; 
    } 
} 

을 A (공유) 서비스로 등록 :

$app["my-first-service"] = $app->share(function() { 
    return new MyFirstService(); 
}); 

마지막으로 당신이 그것을 사용할 수 있습니다

$app->get('links', function() use ($app) { 
    $foo = $app["my-first-service"]->getFoo(); 
})->bind('a1'); 

$app->get ('/links/result/', function() use ($app) { 
    $foo = $app["my-first-service"]->getFoo(); 
})->bind('b2'); 

위의 링크 된 문서 페이지는 귀하가 귀하의 다른 서비스에 어떻게 액세스 할 수 있는지 알려줍니다.

0

사용하기 때문에 : function() use ($app) { 컨트롤러 폐쇄에 - 당신은 같은 전역 변수 컨테이너로 $의 응용 프로그램을 사용할 수 있습니다 : 당신이 변수 저장을위한 데이터 모달 클래스를 사용해야 완벽한 방법으로 $app['my_vars']['foo']='bar';

.

관련 문제