我希望我的类从其超类继承getProperties方法。
class Mother {
function getProperties(){
return get_class_vars(get_class($this));
}
}
class Child extends Mother{
private $one = 1;
private $two = 2;
}
问题是,如果我在Child上调用getProperties,我会得到一个空结果:
$c = new Child();
var_dump( $c->getProperties() );
返回array(0) {}
如果我使用相同的命令覆盖Child中的getProperties方法,它将按预期工作并返回array(2) { ["one"]=> int(1) ["two"]=> int(2) }
。所以我认为$this
已解析为Mother类,而不是继承该方法的类。
我怎样才能让Child以一种我需要它的方式继承该方法?或者我如何改变$this
与儿童而不是母亲一起工作的范围?
也许我只是在这里错过了一个非常简单的事实,所以任何帮助都会受到赞赏。
答案 0 :(得分:5)
问题是您的属性为private
。这使得它们只能被访问,并且专门用于声明类,而不是其他。让他们protected
。
请注意,尽管如此,不同的PHP版本之间似乎存在一些不一致:http://3v4l.org/1Rm6e