Добавил слушатель событий как сервис через таги, чтобы внедрить в листенер свой сконфигурированный сервис по описанию для доктрины
doctrine/event_listeners_subscribers затем чуть чуть из
service_container#tagsIn Doctrine 2.4, a feature called Entity Listeners was introduced. It is a lifecycle listener class used for an entity. You can read about it in the Doctrine Documentation.
Там описана необходимая аннотация [/** @Entity @EntityListeners({"UserListener"}) */] был кусок кода, но не было описана реализация внедрения зависимости:
<?php
// User.php
/** @Entity @EntityListeners({"UserListener"}) */
class User
{
// ....
}
// UserListener.php
class UserListener
{
public function __construct(MyService $service) <<<
{
$this->service = $service;
}
public function preUpdate(User $user, PreUpdateEventArgs $event)
{
$this->service->doSomething($user);
}
}
// register a entity listener.
$listener = $container->get('user_listener');
$em->getConfiguration()->getEntityListenerResolver()->register($listener);
Итого:
1. Указать аннотацию ссылающуюся на класс слушателя событий
2. Создать класс слушателя и описать логику необходимую для установки свойств сущности задействуя внешние сервисы
3. Внедрить эти сервисы как аргументы слушателя в конструктор класса
4. С помощью тега
name: doctrine.orm.entity_listener зарегистрировать слушатель/сервис
Застрелите меня((