2013-08-12 3 views
2

В Symfony 2 Book я увидел, что я могу использовать 3 вида инъекций зависимостей:Каким сеттер тип впрыска называется

  • конструктор
  • сеттер
  • недвижимость

Это довольно очищается, когда вызывается тип конструктора Injection (как только объект создается).

Но как вызывается тип инъекции Setter? Автоматически? Каждый раз, когда запрашивается услуга?

Спасибо за вашу помощь,

Хаким

ответ

1

метод сеттер работает только один раз и сразу же после конструктора. Если вы ищете подтверждение подтверждения Symfony\Component\DependencyInjection\ContainerBuilder :: createService метод. Поскольку службы не создаются дважды, а кеширование в функции set setter вызывает только одно.

+0

Спасибо за ваш ответ. Тогда у вас есть идея, почему в документе они заявляют: «Вы не можете быть уверены, что сеттер будет вызван, и вам нужно добавить проверки, которые вводят любые необходимые зависимости». Если он вызывается после конструктора, почему я не уверен, что он будет вызван? – Hakim

+0

Потому что вы можете создать сервис вручную, как простой класс PHP, или использовать для него фабрику. И это не всегда вызвано вызовом сеттера. –

+0

С моей точки зрения, будет ли служба использовать класс или фабрику для создания объекта, в конце будет вызываться конструктор этого объекта. У вас есть пример, когда сеттер не будет вызван? Спасибо за вашу помощь. – Hakim

Смежные вопросы