Сервисы и автомонтирование в Symfony

Любая часть работы, которая проделывается в Symfony, выполняется объектом. Например, объект Логгер выполняет логирование, а объект Twig отвечает за отображение шаблонов. Эти объекты называют сервисами.

Выше -- лишь часть полного списка. А по мере добавления пакетов, данный перечень будет расти.

Создание сервисов

Используя Symfony, вы можете создавать собственные сервисы — это поможет сделать код более упорядоченным. Допустим, вы желаете сгенерировать какое-нибудь случайное приветствие (к примеру, «Hey», «Yo», «Aloha» и т. п.). Соответствующий код совсем необязательно помещать напрямую в контроллер. Вместо этого создайте новый класс:

И теперь у вас появилась возможность использовать это в контроллере незамедлительно:

В результате Symfony инстанциирует GreetingGenerator, а потом передаст его в качестве аргумента, при этом все произойдет автоматически. Возникает вопрос: можно ли точно так же перемещать в GreetingGenerator логику логгера? Ответ — да. У разработчика существует возможность использовать автомонтирование внутри сервиса, что позволит получить доступ и к другим сервисам. Правда, следует учесть, что все выполняется в конструкторе:

И это работает: никакой конфигурации, да и время сэкономлено.

По материалам https://symfony.com/.