在扩展课程中进行私人通话?

时间:2011-03-21 09:24:53

标签: php override private

我有一个包含函数funcB()的父类,我希望通过在此函数中进行一些更改来覆盖更好的函数。父类中的此函数调用同一类中的另一个私有函数。

示例代码:

class classA {
  private function funcA() {
    return "funcA called";
  }

  public function funcB() {
    $result = $this->funcA();
    return $result;
  }
}

class ClassB extends ClassA {
  public function funcB($a) {
    //do some more stuff
    $result = $this->funcA();
    return $result;
  }
}

我收到致命错误,因为我不允许在ClassB中调用私有父:: funcA()函数。但必须要求召集。这怎么可能呢?

1 个答案:

答案 0 :(得分:11)

private方法声明为protected

See the documentation about visibility

  

声明为public的类成员可以随处访问。声明受保护的成员只能在类本身以及继承和父类中访问。声明为私有的成员只能由定义成员的类访问。