无法从父级 class 访问 属性
Can't access property from parent class
我想要实现的唯一目标是能够从 class A 中访问 Sql
属性 class B,不过我的理解一定是完全脱格了
我试过:
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();
但是代码的行为并不像我希望的那样。
希望有人能指出我出错的正确方向。
$A = new A();
$B = new B();
上面这两行创建了两个不同的对象,它们之间没有任何关系。
因此,由于您在父 class B 中也有一个构造函数 constructor doesn't get called implicit,这意味着您必须更改代码并从 class A 在 [=17= 中调用构造函数] B,例如
public function __construct() {
parent::__construct();
$this->foo();
}
我想要实现的唯一目标是能够从 class A 中访问 Sql
属性 class B,不过我的理解一定是完全脱格了
我试过:
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();
但是代码的行为并不像我希望的那样。
希望有人能指出我出错的正确方向。
$A = new A();
$B = new B();
上面这两行创建了两个不同的对象,它们之间没有任何关系。
因此,由于您在父 class B 中也有一个构造函数 constructor doesn't get called implicit,这意味着您必须更改代码并从 class A 在 [=17= 中调用构造函数] B,例如
public function __construct() {
parent::__construct();
$this->foo();
}