如何从静态子方法获取类名

时间:2011-06-29 13:23:21

标签: php oop inheritance

<?php
class MyParent {

    public static function tellSomething() {
        return __CLASS__;
    }
}

class MyChild extends MyParent {

}

echo MyChild::tellSomething();

上面的代码回声“MyParent”。我怎样才能得到儿童班的名字 - 在这种情况下是“MyChild”?如果有可能......

我只需要知道哪个孩子正在调用继承的方法。

2 个答案:

答案 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中提供。