可以将传递对象作为方法参数称为“依赖注入”吗?

时间:2019-07-10 18:01:09

标签: php oop dependency-injection

请帮助我解决这个基本的OOP问题。这是一个代码示例:

class A
{
    public function foo(SomeClass $someClass) {
        return $someClass->bar();
    }
}

$someclass作为函数参数传递是依赖注入吗?以及为什么会这样。

将其视为面试问题。对于我来说,SomeClass是类A的依赖项,并且它被注入到方法中,因此它应该是Dependency Injection。但是我找不到任何证据来支持我的观点。

我已经检查了What is dependency injection?,这里仅提供了构造函数和setter注入的示例,我的示例与众不同。

1 个答案:

答案 0 :(得分:0)

从最天真的意义上来说,“将依赖项传递给工作单元”然后是依赖项注入。

从广义上讲,“传递一个工作单元实现其职责所必需的依赖关系”,实际上不是。

依赖注入的目标最终是编写更清晰的代码,使代码更易于推理,维护,测试和开发。为此,我们组织事物中的责任(无论是函数,类,库还是其他)。这种责任发生所需的一切都应该传递,而不是在事物内部创建,而不能在事物内部进行模拟,修改或配置。

类并不是要作为各自接收其依赖项的方法的存储库,我们可以为此使用函数。在这种情况下,“依赖性”将是A知道他们应该在bar()上调用什么SomeClass的条件。