如何将服务注入当前用户对象?
使用当前用户对象,我的意思是:
//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
}
答案 0 :(得分:1)
这是非常糟糕的做法,因为您的Entity类应该是仅负责操作自己的数据的简单对象。
但是,如果您决定这样做,您可以在User类中创建容器属性并将其注入Doctrine postLoad事件,请参阅the documentation。
我会再次强调你不应该这样做。我之前看到过这种情况,它会导致过于复杂的类,这些类可能有多重责任,无法测试。