2012-03-19 38 views
1

这与DI与Zend框架相关。我的问题是关于在哪里使用DI容器。是否只有在初始化时使用它才能使初始化应用程序的其余部分不知道存在?或者,是否将它传递给控制器​​,模型,帮助器等以便在需要时使用它?那么Zend 2呢?在Zend/Zend中何处使用依赖注入容器2

+1

DI容器应封装在组合根目录中:http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx – 2012-03-19 17:00:31

+0

谢谢@MarkSeemann!很棒的评论。 – orourkedd 2012-03-20 17:07:47

回答

5

因为它涉及通常的依赖注入,所以如果你正在尝试编写SOLID代码,那么你应该练习这些。我有我写的依赖注入的主题两篇文章,因为它涉及到的背景知识(我认为)的开发人员直接跳进代码之前应该有一个使用DIC:

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

我已经还汇编了如何使用Zend的\迪那就是在ZF2代码库DIC组件的一些例子:

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

还有一点,我想使......一旦你开始传递DIC作为依赖于控制器,模型等......你的DiC实际上变成了一个Service Loca在那一刻。这是完全可以接受的,但您需要首先意识到使用服务定位器将会/应该成为您设计目标的一部分。

ZF2的下一个测试版周期可能会更好地解决如何通过模块,控制器使用Di和服务定位器,以及如何将依赖关系推送到助手和模型之类的东西中。所以请留意一下。

希望能让你开始。

0

我一直在阅读一些答案。首先,据我所知,目前没有使用Zend框架内置的依赖注入容器在“组合根”中执行其工作。

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

简而言之,what it does

  1. 引导Symfony的依赖注入在Zend的应用Bootstrap类
  2. 获得从1一个Zend控制器中的容器,你可以用它来检索您的服务