小编alg*_*oni的帖子

依赖注入中的默认值

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

我想出了这个模式:

class Car {
    private $engine;

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

这样,汽车仍然可以与创建(使用默认的引擎)new car(),或通过传递一个自定义的引擎:new Car(array('engine' => new CustomEngine())).

这是一个正确的方法吗?这与可维护性有什么问题?

php oop dependency-injection

6
推荐指数
1
解决办法
821
查看次数

标签 统计

dependency-injection ×1

oop ×1

php ×1