在yoyo.php
:
class Yoyo {
public $data;
}
在global.php
:
App::singleton('yoyo', function()
{
return new Yoyo;
});
在filters.php
:
$a= App::make('yoyo');
$a->data = 'yep';
在控制器中:
public function doSomething() {
dd(App::make('yoyo'));
}
在filters.php
中,我可以访问data
属性并且它具有预期值。
在控制器中,dd
帮助程序显示data
属性为null
。
在调用控制器方法之前执行过滤器。
为什么$data
null
?
答案 0 :(得分:0)
这是因为Laravel加载文件的方式。先执行filters.php
,然后执行global.php
,首先创建普通对象,然后再创建单例。如果你搬家:
$a= App::make('yoyo');
$a->data = 'yep';
创建单例后,到global.php
,您将得到预期的结果:
对象(Yoyo)#247(1){[“data”] => string(3)“yep”}
答案 1 :(得分:0)
我的完全错误。有一个重定向,所以控制器实际上是在处理一个新的请求,一个没有初始化yoyo的请求。