父类的公共变量在子类中变空?

时间:2013-07-03 00:38:58

标签: php

我提出另一个问题因为我认为人们不理解我的旧问题:

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()它将再次进行这些更改,我再也不能这样做了因为我需要继续在子代中更改它类。

1 个答案:

答案 0 :(得分:0)

我认为OP不了解OOP。

无论如何,您可以使用static达到此想要的行为。 protected $body;static protected $body;$this->body替换为self::body