我通过这种方式扩展了一些课程:
class Baseresidence extends CActiveRecord {
public static function model($className=__CLASS__) {
return parent::model($className); // framework needs, can't modify
}
}
class Site1Residence extends Baseresidence {
}
最后
class_alias('Site1Residence', 'Residence'); // this is part of an autoloader
所以最后我喜欢这个Residence extends Site1Residence extends Baseresidence extends CActiveRecord
在Baseresidence中,我有一个静态方法model()
,它检索一个实例。
现在我可以调用::
$r=Residence::model();
问题是__CLASS__
常量用作默认值,而该级别上的常量是Baseresidence,我需要顶级类名(使用别名创建),它应该是'Residence'< / p>
如果我这样做:
echo get_class($r); // the Baseresidence is printed
目标是打印residence
我不想在调用$r=Residence::model();
时传递任何内容我想在根目录上解决它。
如何获得该级别的顶级班级名称?
答案 0 :(得分:2)
尝试
get_called_class();
请参阅http://php.net/manual/en/function.get-called-class.php
来自文档:
class foo {
static public function test() {
var_dump(get_called_class());
}
}
class bar extends foo {
}
foo::test();
bar::test();
以上示例将输出:
string(3) "foo"
string(3) "bar"