Версия __CLASS__, которая связывается во время выполнения, а не во время компиляции

В следующем PHP-коде я хотел бы заменить __CLASS__ магическая константа в Foo класс с функцией __X__() (или что-то подобное), чтобы при методе hello() вызывается из экземпляра $bar из Bar класс, он печатает hello from Bar (вместо hello from Foo). И я хочу сделать это
без переопределения hello() внутри Bar,

В общем, я хочу версию __CLASS__ это связывает динамически во время выполнения, а не во время компиляции.

class Foo {

public function hello() {

echo "hello from " . __CLASS__ . "\n";

}

}

class Bar extends Foo {

public function world() {

echo "world from " . __CLASS__ . "\n";

}

}

$bar = new Bar();
$bar->hello();
$bar->world();

ВЫХОД:

hello from Foo
world from Bar

Я ХОЧУ ЭТОТ ВЫХОД (без переопределения hello() внутри Bar):

hello from Bar
world from Bar

0

Решение

Вы могли бы просто использовать get_class(), как это:

echo "hello from " . get_class($this) . "\n";
echo "world from " . get_class($this) . "\n";

Выход:

hello from Bar
world from Bar
2

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

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