2016-11-26 4 views
-1

Как я могу ввести службу в текущий пользовательский объект?Symfony: Inject Service в пользовательский объект

С текущим объектом пользователя Я имею в виду это:

//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

Это очень плохая практика, как ваши классы сущностей должны быть простыми объектами, которые отвечают только для управления своих данных.

Если вы решили сделать это, вы можете создать свойство контейнера в своем классе User и ввести его в событие Postctoad Doctrine, см. the documentation.

Я хотел бы еще раз подчеркнуть, что вы не должны этого делать. Я видел это раньше, и это приводит к чрезмерно сложным классам, которые могут иметь несколько обязанностей и не могут быть протестированы.

Смежные вопросы