考虑这段代码:
class C
{
public function get()
{
echo 'C';
static::get();
}
public function save()
{
self::get();
}
}
class B extends C
{
public function get()
{
echo 'B';
static::get();
}
}
class A extends B
{
public function get()
{
echo 'A';
}
}
$x = new A();
$x->save();
它在预期CA
CBA
答案 0 :(得分:1)
为了让它以您想要的方式工作,请反转逻辑 - 让您的保存调用static::get()
,以便它将从继承树的顶部开始;并在回显自己的输出之前,在树中的每个继承类中使用对parent::get()
的调用(基本级别除外)
class C
{
public function get()
{
echo 'C';
}
public function save()
{
static::get();
}
}
class B extends C
{
public function get()
{
parent::get();
echo 'B';
}
}
class A extends B
{
public function get()
{
parent::get();
echo 'A';
}
}
$x = new A();
$x->save();