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