【问题标题】:Instance of class in constructor构造函数中的类实例
【发布时间】:2015-02-16 19:47:47
【问题描述】:

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

class A {

    public function aClassFunction() {...}

}


class B {

    private $aClass;

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

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

它可以正常工作,但看起来“可疑”。

【问题讨论】:

  • 正如你所说:它有效。但是,如果您愿意,您可以使用 extends 之类的:class B extends A 然后您可以在 B 类中使用 A 类中的函数
  • 为什么不通过 B 的构造函数扩展或更好地将 A 作为依赖项传递?甚至还有特征.. 尝试更多研究
  • 我不知道,如何正确地向谷歌解释它。谢谢

标签: php constructor instance


【解决方案1】:

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

class B {

    private $aClass;

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

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

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

【讨论】:

    【解决方案2】:

    看起来“可疑”像一个依赖项。为什么不注入依赖呢?

    class B {
    
        private $aClass;
    
        public function __construct($object) {
            $this->aClass = $object;
        }
    
        public function bClassFunction() {
            $test = $this->aClass->aClassFunction();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2011-04-19
      相关资源
      最近更新 更多