Laravel:从IoC容器中解析对象

时间:2014-10-03 01:05:31

标签: php laravel ioc-container

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

2 个答案:

答案 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的请求。