1

这与 DI 的关系与 Zend 框架的关系一样多。我的问题是关于在哪里使用 DI 容器。是否应该只在引导过程中使用它来初始化,而让应用程序的其余部分不知道存在?或者,如果需要,将其传递给控制器​​、模型、助手等以供在那里使用是一种好习惯吗?Zend 2 呢?

4

2 回答 2

5

由于它通常与依赖注入有关,因此如果您尝试编写 SOLID 代码,则应该练习这一点。我写了两篇关于依赖注入主题的文章,因为它涉及开发人员在直接进入使用 DiC 的代码之前应该具备的背景知识(我认为):

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

我还编译了一些关于如何使用 Zend\Di 的示例,它是 ZF2 代码库中的一个 DiC 组件:

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

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

ZF2 的下一个 beta 周期可能会更好地解决如何通过模块、控制器使用 Di 和服务定位器,以及如何将依赖项推送到帮助程序和模型等事物中。所以请注意这一点。

希望这能让你开始。

于 2012-03-19T21:15:05.917 回答
0

我一直在阅读一些答案。首先,据我所知,Zend framework < ver 2 目前还没有内置让依赖注入容器在“组合根”中工作。

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

简而言之,它的作用

  1. Zend Application Bootstrap 类中的 Bootstrap Symfony 依赖注入
  2. 在 Zend 控制器中从 1 获取容器,您可以使用它来检索您的服务
于 2012-08-21T16:26:15.620 回答