Ioc容器和动态语言(取2)

kei*_*ant 5 php dependency-injection ioc-container dynamic-typing

我一直在阅读依赖注入,控制反转和IoC容器.我还主要使用动态语言编程(PHP在工作,Python在家).以下是我找到的东西,但是当我把它拼凑在一起时,这给我留下了很多空白:

所以我读到的是:IoC容器在静态语言中是一个更大的交易,因为在动态语言中执行DI要容易得多.但是它们还提供了远远超出DI的好处,比如为您管理依赖项,并使您不必手动将十几个对象串联起来.顺便说一句,它们很复杂,所以不要自己尝试(但PHP没有好的).

我觉得这些信息让我有点......卡住了.我该怎么办?我在一个非常大的代码库中工作,具有非常复杂的依赖(并且可能强烈需要重构,但这是另一个并行问题).到目前为止,我们在实施DI方面做得很差,我真的想让我们朝着正确的方向前进.关于动态语言和IoC(或至少IoC容器)似乎没有什么.

我最好暂时将"依赖于手工"的依赖关系放在一起,并且在我更好地处理这些原则之后,担心稍后在容器中自动化它?是否值得实现我自己的简单IoC容器?或者最终是不值得PHP的成本?

sma*_*man 0

Martin Fowler 写的这篇文章几乎可以说是控制反转和依赖注入的圣经。他解释了如何实现 IoC 容器并讨论了不同注入机制的优点。http://martinfowler.com/articles/injection.html

无论您使用什么语言,“手工串依赖”都是不可扩展的。这将很难维护,因为其他开发人员可能不知道所有的手工操作发生在哪里,因此当他们更改某些内容时,他们可能不会更改正确的内容。相比之下,将所有这些放在一个地方将使未来的变革更容易实施。IoC 有助于最大限度地减少重复代码,并确保关注点分离和一致的应用程序架构。

另一方面,听起来您手上有一个相当大的功能应用程序 - 除非您也有很多时间,否则如果它没有损坏,则可能没有必要修复。