PHP在超类中获取属性方法

时间:2012-12-03 20:31:38

标签: php oop

我希望我的类从其超类继承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与儿童而不是母亲一起工作的范围? 也许我只是在这里错过了一个非常简单的事实,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:5)

问题是您的属性为private。这使得它们只能被访问,并且专门用于声明类,而不是其他。让他们protected

请注意,尽管如此,不同的PHP版本之间似乎存在一些不一致:http://3v4l.org/1Rm6e