我提出另一个问题因为我认为人们不理解我的旧问题:
Why a protected variable of parent class come empty?
即:
class Father {
protected $body;
function __construct()
{
}
public function run()
{
$this->change();
$this->change2();
}
private function change()
{
$this->body = 'new value';
}
private function change2()
{
$this->body = str_replace('value','........','new value');
}
}
class Child extends Father {
function __construct()
{
echo $this->body;
}
}
$father = new Father();
$father->run();
$child = new Child();
正文变空了,我需要继续在Child类中更改这个变量体但是它变空了,我认为唯一的解决方案是将body设置为静态。
对于问一个类似的问题,我正试图理解它。编辑:如果我将所有这些run方法的代码放在__construct中并且在子类中调用parent :: __ construct()它将再次进行这些更改,我再也不能这样做了因为我需要继续在子代中更改它类。
答案 0 :(得分:0)
我认为OP不了解OOP。
无论如何,您可以使用static达到此想要的行为。 protected $body;
将static protected $body;
和$this->body
替换为self::body
。