我想知道正在调用方法的类的名称。
例如:
class Mother{
static function foo(){
return "Who call me";
}
}
class Son extends Mother{ }
class OtherSon extends Mother{ }
Son::foo();
>> Son
OtherSon::foo();
>> Other Son
怎么做?
答案 0 :(得分:1)
使用get_called_class()
找到解决方案:
class Mother{
static function foo(){
echo get_class(),PHP_EOL;
echo __CLASS__,PHP_EOL;
echo get_called_class(),PHP_EOL;
}
}
class Son1 extends Mother {}
class Son2 extends Mother {}
Son1::foo();
Son2::foo();
返回:
Mother
Mother
Son1
Mother
Mother
Son2
因此,您可以看到get_class
和__CLASS__
都返回Mother
,但使用get_called_class()
将返回调用该函数的类!
如果使用php> = 5.5
,您似乎还可以使用static::class
返回相同内容