Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про PHP: dependency injection, constructor injection, setter injection

Как реализовать внедрение зависимостей (Dependency Injection) в PHP?

Этот вопрос проверяет знание принципа внедрения зависимостей и его реализации в PHP для управления зависимостями классов.

Короткий ответ

Внедрение зависимостей (DI) в PHP осуществляется путём передачи зависимостей (например, объектов) в класс через его конструктор или методы. Это позволяет легко тестировать классы и управлять их зависимостями, избегая жёсткой привязки. Современные фреймворки, такие как Laravel и Symfony, используют контейнеры зависимостей для автоматического управления внедрением.

Длинный ответ

Внедрение зависимостей (Dependency Injection, DI) — это принцип, при котором зависимости (например, объекты других классов) передаются в класс извне, а не создаются внутри этого класса. Это упрощает тестирование и управление зависимостями.

Основные подходы к внедрению зависимостей

  • Через конструктор:
    Класс получает свои зависимости через конструктор. Пример:

    class UserService {
        	private $logger;
    
        	public function __construct(Logger $logger) {
            	$this->logger = $logger;
        	}
    }
  • Через метод (Setter Injection):
    Зависимость передаётся через специальные методы. Пример:

    class UserService {
        	private $logger;
    
        	public function setLogger(Logger $logger) {
            	$this->logger = $logger;
        	}
    }
  • Использование DI-контейнеров:
    В современных фреймворках, таких как Symfony или Laravel, используется DI-контейнер, который управляет зависимостями и их инъекциями.

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • PHP

    PHP

Ключевые слова

#dependency injection

#constructor injection

#setter injection

Подпишись на PHP Developer в телеграм