gpt4 book ai didi

php - 查询PHP中的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 06:05:15 25 4
gpt4 key购买 nike

我一直在阅读依赖注入(inject),我想我非常了解这些概念,包括构造函数注入(inject)和 setter 注入(inject)。

但是,我不确定在以下情况下我会做什么:

假设我有一个有很多方法的类,但是 只有一个这些方法中的一些需要某个其他对象。如何将此对象提供给该方法?我是否应该像这样直接将对象作为参数传递给方法:

class aClass
{
function aMethod(anotherClass $anotherClass)
{
anotherClass->hello();
}

function otherMethods()
{
}
.....
}

另一种选择是将它提供给整个类(class),这似乎没有必要。像这样:
class aClass
{
protected $_anotherClass;

function aMethod()
{
anotherClass->hello();
}

function otherMethods()
{
}
.....

function setAnotherClass(anotherClass $anotherClass)
{
$this->_anotherClass;
}
}

什么时候应该将对象传递给方法,什么时候应该通过构造函数/ setter 使用依赖注入(inject)?
何时使用这两个选项之一是否有经验法则或最佳实践?

提前感谢您的帮助。

最佳答案

你提到了一个经验法则,所以这里是:

问自己这个问题:有人可以在同一个对象上合法地调用此方法两次,为两次调用中的参数提供不同的值吗?

如果是,则将其保留为参数。如果不是,那么正如您所描述的,它是一个很好的注入(inject)候选者。

This是第一种方法的一个很好的例子,其中删除参数并在类中注入(inject)依赖项将是一个非常糟糕的主意。 C# 而不是 PHP,但你明白了。

关于php - 查询PHP中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com