我有一些类以这种方式扩展:
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"
如果我这样做:
echo get_class($r); // the Baseresidence is printed
目标是打印residence
我不想在调用$r=Residence::model();
时传递任何信息,我想在根上解决它。
如何获得该级别的顶级类名?
尝试
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"