如何从父类获取子类名

时间:2012-03-06 04:40:03

标签: php oop php-5.3 late-static-binding

我试图在不需要子类的功能的情况下完成此操作......这可能吗?我感觉不是,但我真的很想确定......

<?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
?>

1 个答案:

答案 0 :(得分:13)

使用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();