gpt4 book ai didi

php - 依赖注入(inject)中的默认值

转载 作者:可可西里 更新时间:2023-11-01 13:21:08 25 4
gpt4 key购买 nike

我目前有一个具有紧密耦合依赖关系的类,并且类构造函数当前没有任何参数。我正在尝试能够有选择地传入不同的依赖项,而不更改构造函数签名,从而破坏当前使用该类的应用程序。

我想到了这个模式:

class Car {
private $engine;

public function __construct($options = array()) {
if (isset($options['engine']) {
$this->engine = $options['engine'];
} else {
$this->engine = new Engine();
}
}
}

这样 Car 仍然可以使用 new car() 创建(使用默认引擎),或者通过传入自定义引擎:new Car(array('engine' =>新的 CustomEngine()))

这是执行此操作的正确方法吗?这在可维护性方面有什么问题?

最佳答案

我认为这是一个正确的模式,我经常使用它。

依赖注入(inject)允许类的用户提供依赖。使用您的代码,这是可能的,所以我看不出有什么问题。

但我唯一不同的是我使用显式参数,这样我就可以对对象进行类型提示以确保它们属于正确的类,并且更容易知道可以传递哪些参数而无需查看在代码处:

class Car {
private $engine;

public function __construct(Engine $engine = null) {
$this->engine = $engine ?: new Engine();
}
}

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

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