В следующем 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
Вы могли бы просто использовать get_class()
, как это:
echo "hello from " . get_class($this) . "\n";
echo "world from " . get_class($this) . "\n";
Выход:
hello from Bar
world from Bar
Других решений пока нет …