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

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

1

Решение

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector