2016-02-23 254 views
0

我已经取得了一些示例代码来说明我的问题:PHP:类扩展

class Core { 
    public $test = null; 
    public function __construct(){ 
     $this->test = "hi"; 
    } 
} 

$data = new Core; 

class Extension extends Core { 
    public function __construct(){ 
     $this->test = "hello"; 
    } 
} 

$data->ext = new Extension; 

echo $data->test . "<br />"; 
echo $data->ext->test; 

,其输出为:

hi
hello

我的问题是很难解释,但我只是想知道,如果有一种覆盖子类中父类的$ test变量的方法如下:

echo $this->test;将输出“hello”,因为它在子类中更改。

有没有办法做到这一点或儿童不能访问/更改父变量?

+0

然后,'static'变量应该为你工作 – codisfy

+0

你能解释一下如何做到这一点或可能参考的东西,我可以看看?谢谢你@codeHeart或者它会只是'公共静态$测试= null;'? – KDOT

+1

http://php.net/manual/en/language.oop5.static.php,第二个例子应该会对你有所帮助 – codisfy

回答

1

使用static属性作为您的用例。

入住这里http://php.net/manual/en/language.oop5.static.php,第二个例子应该可以帮助您

+0

快速的问题,手册不解释静态变量是否可以改变,因为我在尝试更改时收到错误:https ://gyazo.com/a86a281c7615f782cd2a47828ea24097 – KDOT

+1

是的,访问变量的方式也不同,你需要使用'Classname :: $ variableName'而不是'$ instance-> variableName',检查如何使用的例子。 – codisfy

+0

要怎么改变它的内容? 'self :: test =“hi”;'返回错误: 致命错误语法错误,在第6行出现意外的'=':/ – KDOT