@P747

Symfony — как поместить в контейнер свою реализацию сервиса?

Добрый день, подскажите пожалуйста желательно с примерами. Как поместить в контейнер свою реализацию сервиса, в каком месте это делать? В моем случае "controller_resolver".
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
@Flying
Здесь есть несколько путей:
  1. Если это что-то простое и вы работаете с Symfony Framework (т.е. не со standalone контейнером) - то вам просто необходимо описать ваш сервис в конфигурации сервисов (в Symfony 4 и выше это config/services.yaml). Как это делается - описано в документации. Описание стандартного controller_resolver можно увидеть здесь, в Yaml это будет выглядеть вот так:

    services:
      controller_resolver:
        class: Full\Name\Of\Your\Implementation
        arguments:
         - '@service_container'
         - '@?logger'
       tags: 
         - {'name:':'monolog.logger', channel: 'request'}

    ваша реализация, конечно, может отличаться по зависимостям.

  2. Если это что-то более сложное - то настройка сервисов производится через compiler pass. В них вы имеете полный доступ к ContainerBuilder и можете программно сформировать в нём всё что вам необходимо. Однако сомнительно что в данном случае вам это потребуется.


В целом все эти вопросы очень подробно разобраны в документации компонента Dependency Injection.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mad_maximus
@mad_maximus
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы