Может ли DI контейнер внедрять в конструктор классы, не объявленные в контейнере? Допустимclass Expample {
function __construct(Responser $responser) {}
}
$di = new DI();
$di->set('expample', 'Example');
Класс Responser не зарегистрирован в контейнере. Имеет ли право Di искать Responser за пределами себя и при успешном нахождении внедрять его в конструктор? Или он должен искать Responser только внутри себя, в случае отсутствия кидать исключение?

21 Авг 2019 в 07:03
186 +1
0
Ответы
1

DI контейнер может внедрять классы, которые не были объявлены в самом контейнере. В вашем примере, если Responser класс не зарегистрирован в DI контейнере, DI контейнер может поискать Responser класс в других доступных местах, например, в автозагружаемых файлах или в стандартных папках приложения.

Однако, если Responser класс не может быть найден, DI контейнер должен предпринять действия, заданные вашей логикой обработки таких ситуаций. Например, он может кинуть исключение или использовать альтернативное значение по умолчанию.

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

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир