Выбор ответа Junior Symfony кратко обновлено

Автоконфигурация сервисов Symfony

Вопрос

Как в Symfony 6/7 сервис получает зависимости без ручного описания в services.yaml?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Autowiring по типам конструктора и autoconfigure по интерфейсам. По умолчанию все классы из src/ регистрируются как сервисы, autowire: true подставляет зависимости по типам, а autoconfigure: true добавляет теги по интерфейсам (например, подписчики событий).

Варианты ответа

  1. Autowiring по типам конструктора и autoconfigure по интерфейсамправильный ответ
  2. Через статические вызовы Container::get() в конструкторе сервиса
  3. Через глобальные переменные, которые заполняет Kernel при старте
  4. Через рефлексию на каждый запрос без кеширования контейнера

Разбор

По умолчанию все классы из src/ регистрируются как сервисы, autowire: true подставляет зависимости по типам, а autoconfigure: true добавляет теги по интерфейсам (например, подписчики событий). Важно, что контейнер компилируется один раз и кешируется в PHP-код, поэтому рефлексии на каждом запросе нет, в отличие от наивной реализации.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.