【问题标题】:Dependency injected or Scope Resolution Operator?依赖注入或范围解析运算符?
【发布时间】:2012-05-26 17:39:09
【问题描述】:

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

在我的系统中,我想要一些函数库来简化整个系统中的许多任务。那可能是验证电子邮件。如果我可以让一个函数来做,就没有理由每次都写完整的正则表达式,所以我只需要在一个地方进行更改和修复错误。

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

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

所以我的问题是 - 为系统创建工具集的最正确方法是什么?首先,是把它做成一个类,而不是简单的函数吗?然后,如果真的是一门课,我应该瞄准 SRO 还是 DI?

我知道这个问题可能没有明确的答案,但我想知道我是否完全偏离轨道或走向许多其他编码人员也会做的事情。

提前致谢:)

【问题讨论】:

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


    【解决方案1】:

    DI 可以更轻松地对您的类和方法进行单元测试,而无需依赖注入的类……您可以模拟注入的对象并根据您的测试操作它的返回值。范围解析为您留下了这种依赖关系,因此测试不会完全隔离。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-02
      • 2012-04-20
      • 2010-09-09
      • 2014-10-05
      • 2015-12-18
      • 1970-01-01
      • 2018-12-24
      • 2018-04-24
      相关资源
      最近更新 更多