Как обратиться к родительскому классу базового класса из статического метода под-под-базового класса без указания имени базового класса

В 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 />

person John Sonderson    schedule 09.02.2015    source источник


Ответы (1)


Сохраните имя родительского класса внутри переменной и используйте эту переменную для вызова статического метода. Нравится:

$parentClassName = get_parent_class(get_parent_class());
echo $parentClassName::helloStatic();
person Ninad Ajnikar    schedule 09.02.2015
comment
Интересное решение. Пожалуйста, дайте мне знать, если вы также знаете однострочное решение. Спасибо. - person John Sonderson; 09.02.2015