0

Silex 2 で最初のプロジェクトを作成しています。あるコントローラーの変数を他のコントローラーで使用できるようにする方法がわかりません。

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


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

$foo を "b2" で見えるようにする方法は?

4

2 に答える 2

4

2 つのコントローラーで何かを行う必要がある場合は、それをサービスにするのが最善です。その後、両方で使用できます。サービスの作成に関するSilex のドキュメントは次のとおりです。

最初にクラスを作成する必要があります。

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

次に、(共有) サービスとして登録します。

$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');

上記のリンクされたドキュメント ページには、他のサービスにアクセスする方法も記載されています。

于 2013-11-01T19:51:43.280 に答える