Symfony:将服务注入用户对象

时间:2016-11-26 20:01:27

标签: symfony dependency-injection

如何将服务注入当前用户对象?

使用当前用户对象,我的意思是:

//in controller
$user = $this->get('security.token_storage')->getToken()->getUser();

//later I want to do this in the user class: 
function getData() {
   $data = $this->getSomeData();//normal function
   $data += $this->getMyService()->getSomeMoreData();//invoke service function
}

1 个答案:

答案 0 :(得分:1)

这是非常糟糕的做法,因为您的Entity类应该是仅负责操作自己的数据的简单对象。

但是,如果您决定这样做,您可以在User类中创建容器属性并将其注入Doctrine postLoad事件,请参阅the documentation

我会再次强调你不应该这样做。我之前看到过这种情况,它会导致过于复杂的类,这些类可能有多重责任,无法测试。