注入依赖关系或范围解析运算符?

时间:2012-05-19 11:04:17

标签: php oop api dependency-injection scope-resolution

我没有找到类似的问题,所以如果它已经存在,我会道歉。

在我的系统中,我需要许多函数库来简化整个系统中的许多任务。这可能是验证电子邮件。如果我可以有一个函数,那么每次都没有理由编写完整的正则表达式,因此我只需要在一个地方更改内容并修复错误。

假设我写了一个名为Files_Tools的类。

我可以通过依赖将这个类的实例注入需要此类函数的对象来使其工作。但我也可以使用静态函数编写Files_Tools类,并使用范围解析运算符访问它们。但正如我已经了解DI(依赖注入)的一个主要问题是避免这种“全球使用”。所以我的逻辑告诉我采用DI方法。然而,我这样做仍然感觉“不对”。

所以我的问题是 - 什么被认为是为系统创建工具集的最正确方法?首先,是将它作为一个类,而不仅仅是简单的函数?然后,如果它真的是一个课程是要走的路,我应该针对SRO还是DI?

据我所知,这个问题可能没有明确的答案,但我想知道我是否完全偏离轨道,或者还有其他许多程序员也会这样做。

提前致谢:)

1 个答案:

答案 0 :(得分:2)

DI使得更容易对类和方法进行单元测试,而不依赖于注入的类...您可以模拟注入的对象并根据测试操作其返回值。范围解析使您具有此依赖性,因此测试不会完全隔离。

我早期的许多项目都使用静态类来实现这样的功能,并且尝试为他们编写6年的单元测试现在是一项真正的苦差事,因为我没有使用DI。