Получить имя класса верхнего уровня, когда используется наследование и псевдоним класса

У меня есть несколько классов, расширенных таким образом:

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() метода model() которая извлекает экземпляр.

Теперь я могу позвонить ::

 $r=Residence::model(); 

Проблема заключается в том, что константа __CLASS__ используется как значение по умолчанию, а на этом уровне – Baseresidence, и мне нужно имя класса верхнего уровня (созданное с псевдонимом), и это должно быть «Резиденция»,

если я сделаю:

 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"