使用继承和类别名时获取顶级类名

时间:2011-06-05 20:36:25

标签: php oop class

我通过这种方式扩展了一些课程:

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();时传递任何内容我想在根目录上解决它。

如何获得该级别的顶级班级名称?

1 个答案:

答案 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"