$ this->容器始终返回null

时间:2016-03-28 19:25:01

标签: symfony

我正在尝试从容器中获取一些服务:

class MyController extends Controller
{
    private $service;
    public function __construct() {
       $this->service = $this->container->get("service");
    }
}

但容器为null并抛出异常:

Error: Call to a member function get() on null

我怎样才能使它有效? ps:我不想让我的控制器成为一项服务。

2 个答案:

答案 0 :(得分:3)

修改

您无法从构造函数访问服务容器,因为尚未调用方法setContainer

在控制器的另一种方法中调用它,它可以正常工作。

答案 1 :(得分:2)

延伸接受的答案。

实例化服务类时,首先调用构造函数。然后,内核/服务容器检查对象是否是ContainerAware的实例,然后调用方法setContainer$container参数在构造函数中不可用。

如果要进行一次初始化(如构造函数),请覆盖方法setContainer并在那里进行容器特定的初始化。