如何在不指定基类名称的情况下从子基类静态方法引用基类的父类


How to refer to parent class of base class from sub-sub-base-class static method without specifying base class name

在PHP中,我想从子类调用父类的父类中的静态方法,而不引用父类名称的父类(请参阅下面代码中的注释):

class Base {
  public static function helloStatic() {
    return "Hello base!'n";
  }
}
class Foo extends Base {
  private $fooMember;
  public static function helloStatic() {
    return "Hello foo!'n";
  }
  private function __construct() {
    $this->fooMember = "hello";
  }
  public function getFooMember() {
    return $this->fooMember;
  }
}
class Bar extends Foo {
  private $barMember;
  public static function helloStatic() {
    // I want to write the equivalent of:
    //echo Base::helloStatic();
    // here *without specifying any class names*
    echo get_parent_class(get_parent_class())::helloStatic();
  }
}
echo Bar::helloStatic();

预期输出:

Hello base!

输出:

<br />
<b>Parse error</b>:  syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';' on line <b>45</b><br />

将父类名称存储在变量中,并使用该变量调用静态方法。像这样:

$parentClassName = get_parent_class(get_parent_class());
echo $parentClassName::helloStatic();