2012-03-06 69 views
6

我试图完成此操作,而不需要子类上的函数......这可能吗?我有一种感觉它不是,但我真的想是的......如何从父类获取子类名称

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

回答

13

使用get_called_class()而不是__CLASS__。您还可以用self替换static,因为该功能将通过后期绑定为您解析课程:

class A { 
    public static function who() { 
     echo get_called_class(); 
    } 
    public static function test() { 
     self::who(); 
    } 
} 

class B extends A {} 

B::test();