<?php
class MyParent {
public static function tellSomething() {
return __CLASS__;
}
}
class MyChild extends MyParent {
}
echo MyChild::tellSomething();
上面的代码回声“MyParent”。我怎样才能得到儿童班的名字 - 在这种情况下是“MyChild”?如果有可能......
我只需要知道哪个孩子正在调用继承的方法。
答案 0 :(得分:7)
__CLASS__
是一个伪常量,它总是引用定义它的类。使用late-static-binding
引入了函数get_called_class()
,它在运行时解析了类名。
class MyParent {
public static function tellSomething() {
return get_called_class();
}
}
class MyChild extends MyParent {
}
echo MyChild::tellSomething();
(作为旁注:通常方法不需要知道他们被称为课程)
答案 1 :(得分:5)
您所描述的内容称为Late Static Bindings,它在PHP 5.3中提供。