我唯一想要实现的是能够从类 B 中访问 A 类中的Sql
属性,但我的理解必须完全脱离电网。
我试过了:
class A {
public $Sql; /*object*/
public function __construct() {
$this->Sql = new MySQLi("localhost", "user", "password", "database");
}
}
class B extends A {
public function __construct() {
$this->foo();
}
public function foo() {
var_dump($this->Sql); // NULL
var_dump(parent::Sql); // Error due to Sql not being a constant, can't set an object as a constant.
}
}
$A = new A();
$B = new B();
但是代码的表现并不像我希望的那样。
希望有人可以指出我在哪里出错了正确的方向。
答案 0 :(得分:4)
$A = new A();
$B = new B();
上面这两行创建了两个不同的对象,它们之间没有任何关系。
因为你在B类中也有一个父constructor doesn't get called implicit的构造函数,这意味着你必须改变你的代码并从B类的A类中调用构造函数,例如。
public function __construct() {
parent::__construct();
$this->foo();
}