2015-02-09 5 views
0

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

Так что я хочу версию __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 

ответ

2

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

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

Выход:

hello from Bar 
world from Bar 
+0

@JohnSonderson Добро пожаловать! Хороший день: D – Rizier123

+0

Это хороший ответ. Благодарю. :-) –