Где использовать контейнер для инъекций зависимости в Zend / Zend 2 - PullRequest
1 голос
/ 19 марта 2012

Это относится как к DI, так и к инфраструктуре Zend. Мой вопрос о том, где использовать контейнер DI. Должен ли он использоваться только во время начальной загрузки для инициализации, оставляя остальную часть приложения в неведении? Или это хорошая практика, чтобы передать его контроллерам, моделям, помощникам и т. Д. Для использования там при необходимости? А как насчет Zend 2?

Ответы [ 2 ]

5 голосов
/ 20 марта 2012

Поскольку это относится к внедрению зависимостей в целом, это то, что вы должны практиковать, если вы пытаетесь написать твердотельный код.У меня есть две статьи, которые я написал по теме «Внедрение зависимостей», поскольку она связана с базовыми знаниями (я думаю), которые должны иметь разработчики, прежде чем перейти непосредственно к коду, который использует DiC:

http://ralphschindler.com/2011/05/18/learning-about-dependency-injection-and-php

Я также собрал несколько примеров использования Zend \ Di, который является компонентом DiC в кодовой базе ZF2:

https://github.com/ralphschindler/Zend_DI-Examples/

Еще один момент, я хотел быmake ... Как только вы начинаете передавать DiC как зависимость в контроллеры, модели и т. д., ваш DiC фактически становится локатором службы в этот момент.Это вполне приемлемо, но вы должны заранее знать, что использование Service Locator могло бы / должно было быть частью ваших целей проектирования.

Следующий бета-цикл ZF2, вероятно, лучше расскажет, как Di и Service Locatorsиспользуются через модули, контроллеры и как зависимости вставляются в такие вещи, как помощники и модели.Так что следите за этим.

Надеюсь, что вы начали.

0 голосов
/ 21 августа 2012

Я читал некоторые ответы. Во-первых, насколько я знаю, в настоящее время он не встроен в среду Zend

Следовательно, вашей лучшей ставкой будет поиск услуг, как уже упоминалось здесь. Я придумал настройку приложения Zend Framework для этого. Проверьте это за здесь .

В двух словах, что он делает это

  1. Bootstrap Инъекция зависимостей Symfony в класс начальной загрузки Zend Application
  2. Получите контейнер из 1 в контроллере Zend, где вы можете использовать его для получения ваших услуг
...