【发布时间】:2012-03-31 19:07:12
【问题描述】:
我目前正在重构基于 Zend 框架的 PHP 库,从使用服务定位器到(构造器)依赖注入 (DI)。我觉得它大大改进了我的代码,但我不确定是否应该注入所有依赖项。对于经常使用且不特定的依赖项,服务定位器似乎更容易。我仍然使用服务定位器访问以下依赖项:
- 一个 Zend_Translate 对象(我需要到处翻译消息)。
- 一个 Zend_Locale 对象(存储当前语言)
- 一个 Zend_Config 对象(很多东西都可以通过 ini 文件配置)
- 实用程序类的实例(用于数组和字符串操作)
如果我注入这些依赖项,它们会使我的构造函数变得混乱并分散对特定依赖项的注意力。对于测试,我可以在运行测试之前在我的服务定位器中设置这些依赖项。我内心的实用主义者说我做得很好,但纯粹主义者说我应该一直使用 DI。
对于这些类型的对象,你会推荐 DI 吗?
【问题讨论】:
-
无法回答。你显然知道有利有弊。由您做出有意识的决定。
-
嗯,问题是:你会为此推荐 DI,所以从这个意义上说,问题很明确。
-
我赞成并投票结束的问题很少。这是一个很好的问题,但似乎由你来决定。这是您的应用程序,您知道该主题的优缺点。
-
@markus 出于某种原因,我总是建议 DI 而不是 SL。但那只是我的个人意见。回答这个问题是开放式的,因此不适合 SO。也许它应该迁移给程序员。
-
我不太熟悉程序员模组认为适合那里的东西,但如果适合,那么迁移将是一种选择。我认为这是一个重要的问题,我很想了解人们的原因(包括你的原因,@Gordon)。
标签: php zend-framework dependency-injection