在 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”可见?
在 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”可见?
如果你需要在两个控制器中做某事,最好让它成为一个服务;那么它在两者中都可用。这是有关服务创建的 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');
上面链接的文档页面还告诉您如何访问您的其他服务。
因为您正在使用:
function() use ($app) {
在控制器闭包中-您可以将 $app 用作全局变量容器,例如:
$app['my_vars']['foo']='bar';
您应该以一种完美的方式将数据模式类用于变量存储。