如果这是一个好的做法,或者有更好的清洁方法可以让我知道吗?它对我来说看起来很笨拙,所以我想知道我之前是否有过这样的原因。
Class A {
public $instance_of_b;
function __construct () {
$this->instance_of_b = new B;
}
function deeper_hello() {
$this->instance_of_b->say_hi();
}
}
Class B {
public function say_hi() {
echo "Hello, from B!";
}
}
$instance_of_a = new A;
$instance_of_a->deeper_hello();
它解析为PHP,因此它没有语义错误,但是有更简洁的方法吗?
我应该说,这显然不是我的代码,它只是方法。我实际上在做的是创建一个使用PDO的SQL类。在那个SQL类中,我正在SQL类的属性中记录PDO和PDOStatment对象。
答案 0 :(得分:0)
不是在A中实例化B,而是通过构造函数将B传递给A会更好。这称为依赖注入,通过这样做,A不再与B紧密耦合。
Class A {
public $instance_of_b;
function __construct ($b) {
$this->instance_of_b = $b;
}
function deeper_hello() {
$this->instance_of_b->say_hi();
}
}
Class B {
public function say_hi() {
echo "Hello, from B!";
}
}
$instance_of_b = new B;
$instance_of_a = new A($instance_of_b);
$instance_of_a->deeper_hello();