> Зачем нужен и как работает Dependency Injection в Symfony (PHP)

Уровень: senior · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

Dependency Injection (DI) в Symfony - это паттерн, который позволяет передавать зависимости объекту извне, а не создавать их внутри него. Это нужно для слабой связанности кода, упрощения тестирования и повышения гибкости приложения.

Как работает DI в Symfony:

  1. Сервис-контейнер - центральное хранилище всех объектов (сервисов). Конфигурация сервисов задаётся в YAML, XML или PHP (например, config/services.yaml).
  2. Автоматическое внедрение (autowiring) - Symfony анализирует типы аргументов конструктора и автоматически подставляет нужные сервисы из контейнера.
  3. Пример:
    PHP
    class UserController {
    public function __construct(private UserRepository $userRepository) {}
    }
    Symfony сам создаст UserRepository и передаст его в конструктор.
  4. Тегирование - для внедрения нескольких сервисов одного типа (например, обработчиков событий) используются теги (tags).
  5. Ленивая загрузка - сервисы создаются только при первом обращении, что экономит ресурсы.

Без DI пришлось бы вручную создавать зависимости через new, что приводит к жёсткой связанности и усложняет замену реализаций (например, для тестов с моками).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью