只调用父方法
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。否则你会得到一个错误。
让我们想象一下例子 - 我们有三个 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。否则你会得到一个错误。