Задать вопрос

Где symfony DI собирает все зависимости?

Привет всем, хотел уточнить. Где symfony DI собирает все зависимости?
И через что (какой компонент) прокидывает зависимости в методы, свойства или конструктор?

Например контроллер
public function actionIndex(Request $r){
Переменная $r переданная через аргумент метода в контроллере
уже содержит в себе текущий инстанс Request
}

В каком месте приложения данный проброс (инжект) инстанса в метод actionIndex произошел?
  • Вопрос задан
  • 817 просмотров
Подписаться 6 Сложный Комментировать
Решения вопроса 1
@Flying
Если говорить именно об аргументах контроллера, то они собираются в ArgumentResolver::getArguments() на основании метаданных (получаемых через reflection) из ArgumentMetadataFactory::createArgumentMetadata. Передача аргументов в action контроллера идёт при его вызове здесь.

Если же речь идёт об общем случае то там схема существенно сложнее т.к. непосредственно инициализация сервисов очень сильно отличается в зависимости от настроек контейнера в отношении конкретного сервиса (вспоминаем про factories, абстрактные сервисы и т.п.), но в общем случае все варианты приводят к генерации соответствующего метода в контейнере.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы