仅调用父方法

时间:2016-03-28 15:50:11

标签: php inheritance codeigniter-3

让我们想象一下示例 - 我们有三个类

class A {

  protected function render()
  {
     echo 'class A';
  }

  protected show_error()
  {
     $this->render();
     exit('error');
  }  

}

class B extends A {
   protected function render()
   {
     echo 'class B';
     parent::render();
   } 

}


class C extends B {
{
}

所以我创建了一些代码

c = new C();
c->show_error();

输出

class B
class A
error

问题是 - 为什么“show_error”方法从B类调用“render”方法? 为什么不从A类本身只调用“渲染”?

有人可以解释一下吗?是否有可能以“我的方式”做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是基本的OOP

class A {

  protected function render()
  {
     echo 'class A';
  }

  public function show_error()
  {
     self::render(); // this is what you're after
     exit('error');
  }  

}

它调用B::render()的原因是C扩展BB重新实现render()

另外,show_error()应该是公开的。否则你会收到错误。