2

我希望我的类从其超类继承 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与孩子而不是母亲一起工作的范围?也许我只是在这里遗漏了非常简单的事实,因此感谢您的帮助。

4

1 回答 1

5

问题是您的属性是private. 这使得它们只能被声明类访问,并且只能被声明类访问。制作它们protected

请注意,即使那样,不同的 PHP 版本之间似乎也存在一些不一致:http: //3v4l.org/1Rm6e

于 2012-12-03T20:36:24.250 回答