构造函数中 class 的实例

Instance of class in constructor

我不确定我的方法。 A 有两个 classes 并且在第二个 class 中调用第一个 class 的函数,如下所示:

class A {

    public function aClassFunction() {...}

}


class B {

    private $aClass;

    public function __construct() {
        $this->aClass = new A();
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}

它只是有效,但看起来 "suspiciously"。

您可以在 B class 中使用依赖注入。这种方法可以帮助您在测试中模拟 classes。

class B {

    private $aClass;

    public function __construct(A $a) {
        $this->aClass = $a;
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}

$b = new B(new A());

看起来 "suspiciously" 像一个依赖项。为什么不注入依赖项?

class B {

    private $aClass;

    public function __construct($object) {
        $this->aClass = $object;
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}