Как получить имя дочернего класса из родительского класса


Я пытаюсь сделать это, не требуя функции в дочернем классе... возможно ли это? У меня такое чувство, что это не так, но я действительно хочу быть уверен...

<?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
?>
Author: BoltClock, 2012-03-06

1 answers

Использовать 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();
 13
Author: BoltClock, 2012-03-06 04:42:15