Как и для любой другой службы в проекте Symfony2, вы можете получить к ней доступ из других классов через контейнер инжектора зависимости.По сути, вы должны зарегистрировать свой класс наблюдателя в качестве службы, а затем внедрить службу шаблонов в службу наблюдателей.См. Документы для инъекционных услуг .
Если вы не знакомы с тем, как Symfony обрабатывает внедрение зависимостей, я бы рекомендовал прочитать всю главу документации - это очень полезно.Также, если вы хотите найти все сервисы, которые зарегистрированы для приложения, вы можете использовать консольную команду container:debug
.После этого вы также можете добавить название службы, чтобы просмотреть подробную информацию об услуге.
Изменить
Я прочитал ваши изменения в вопросе, но все же рекомендую перейти по маршруту DI.Это является духом Symfony2 :) Вы обеспокоены тем, что ваш наблюдатель недостаточно распространен, чтобы использовать его в качестве службы, но нет строгого правила, говорящего: «Вы должны использовать этот фрагмент кода в X местах вдля того, чтобы оно было «общим».
Использование DIC дает еще одно огромное преимущество - оно обрабатывает другие зависимости для вас.Допустим, в шаблонном сервисе есть 3 сервисы, внедренные в себя.При использовании DIC вам не нужно беспокоиться о зависимостях службы шаблонов - они обрабатываются для вас.Все, о чем вы заботитесь, - это попросить его «внедрить шаблонную службу в эту другую службу», а Symfony позаботится обо всей тяжелой работе.
Если вы действительно против определения своего наблюдателя в качестве службы, вы можете использоватьвнедрение в конструктор или сеттер, если вы находитесь в контексте, учитывающем контейнер.