在Zend / Zend 2中使用依赖注入容器的位置

时间:2012-03-19 16:01:03

标签: zend-framework dependency-injection zend-framework2

这与DI有关,与Zend框架有关。我的问题是在哪里使用DI容器。是否应该只使用durring bootstrap进行初始化,让应用程序的其余部分不知道存在?或者,如果需要,将它传递给控制器​​,模型,帮助器等是否是好的做法? Zend 2怎么样?

2 个答案:

答案 0 :(得分:5)

由于它通常涉及依赖注入,如果您尝试编写SOLID代码,那么您应该练习这一点。我有两篇关于依赖注入主题的文章,因为它与开发人员应该具有的背景知识有关,然后直接跳转到使用DiC的代码:

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

我还编写了一些如何在ZF2代码库中使用Zend \ Di作为DiC组件的示例:

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

另一点,我想制作......一旦你开始将DiC作为依赖项传递给控制器​​,模型等......你的DiC实际上就变成了服务定位器。这是完全可以接受的,但您需要事先了解使用服务定位器将/应该成为您设计目标的一部分。

ZF2的下一个beta周期可能更好地解决Di和服务定位器如何通过模块,控制器以及如何将依赖关系推送到辅助工具和模型之类的问题。所以请留意这一点。

希望能让你开始。

答案 1 :(得分:0)

我一直在阅读一些答案。首先,据我所知,它目前还没有内置Zend框架< ver 2让依赖注入容器在"组合root"中完成它的工作。

因此,您最好的选择是这里已经提到过的服务定位器。我已经提出了一个Zend框架应用程序设置来做到这一点。通过here查看。

简而言之,what it does

  1. Zend Application Bootstrap类中的Bootstrap Symfony依赖注入
  2. 从Zend控制器中的1中获取容器,您可以使用它来检索服务