只调用父方法

Call only parent method

让我们想象一下例子 - 我们有三个 classes

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" 方法从 class B 调用 "render" 方法? 为什么不只从 class A 本身调用 "render"?

有人可以解释一下吗?是否可以在 "my way" 中做到这一点?

谢谢!

这是基本的 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 扩展了 B 并且 B 重新实现了 render()

此外,show_error() 应该是 public。否则你会得到一个错误。