Я пытаюсь выполнить это, не требуя функции над дочерним классом … возможно ли это? У меня такое чувство, что это не так, но я действительно хочу быть уверенным …
<?php class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // Here comes Late Static Bindings } } class B extends A { public static function who() { echo __CLASS__; } } B::test(); //returns B ?>
Используйте вместо get_called_class()
вместо __CLASS__
. Вы также сможете заменить static
на self
поскольку функция разрешит класс через позднюю привязку для вас:
class A { public static function who() { echo get_called_class(); } public static function test() { self::who(); } } class B extends A {} B::test();