在参加了 ZendCon 2012 之后,我看到了 ZF2 中的许多类是如何实现 DI 并通过构造函数将它们的依赖项传递给它们的。ZF2 有一个服务管理器可以帮助解决这个问题。我正在尝试学习如何实现这一点并学习其最佳实践。
然后......我加载了ZfcUser模块并看到用户服务并没有完全遵循这种模式,实际上它隐藏了它的依赖关系在一堆延迟加载 getter 后面。现在,这个模块最初是由 Evan Coury 编写的,他是 ZF2 中整个模块系统背后的大脑,所以我知道这个特定模块写得很好,或者至少遵循了建议的 zf2 最佳实践。
我的问题是,为什么这个类将其依赖项隐藏在 getter 后面并实际上从服务管理器中获取它们(在这种情况下,它看起来就像一个注册表),而不是在构造函数中明确定义它们?
这实际上是不是违背了 DI 明确依赖关系的原则?