我在Father
类中得到了一个受保护的变量,该变量的内容将在Father
类中更改,但我需要在子类中使用此变量,即:
class Father {
protected $body;
function __construct(){
$this->body = 'test';
}
}
class Child extends Father{
function __construct(){
echo $this->body;
}
}
$c = new Father();
$d = new Child();
为什么变量body
变空?如果我声明它是静态的,它是否有效,如果我想在子类中访问和修改它们,我应该将所有变量声明为静态吗?
答案 0 :(得分:3)
您必须调用父构造函数。
class Father {
protected $body;
function __construct(){
$this->body = 'test';
}
}
class Child extends Father {
function __construct(){
parent::__construct();
echo $this->body;
}
}
$c = new Father();
$d = new Child();
答案 1 :(得分:0)
这是因为你重写了构造函数。您也必须调用父的构造函数。的 More info 强>
class Child extends Father {
function __construct() {
parent::__construct();
echo $this->body;
}
}