2009-07-31 6 views
13

Возможно ли получить имя класса верхнего уровня из расширенного класса, не устанавливая его из класса верхнего уровня. См. Пример ниже, я хотел бы получить «Foo» от Base. Я знаю, что могу установить переменную из Foo, но надеясь пропустить дополнительный шаг.Получить имя класса из расширенного класса

Спасибо.

class Base { 

    function __construct() { 

     echo '<p>get_class: '.get_class().'</p>'; 
     echo '<p>__CLASS__: '.__CLASS__.'</p>'; 

    } 

} 


class Foo extends Base { 

} 


$test = new Foo(); 

(PHP 5.2.4+)

ответ

25

Использование:

get_class($this); 
+0

Не знаю, кому это поручить. Поэтому я отвечу первым с ответом. –

25

get_called_class() для статических классов или get_class($this) для проиллюстрированный.

get_called_class(), как сказал Джейсон, был введен в PHP 5.3

+1

'get_called_class()' доступен только с 5,3 – jason

+5

Мне нравится PHP 5.3. –

+1

С PHP 5.5 вы можете использовать 'static :: class' вместо' get_called_class() 'и' get_class ($ this) '. –

3

Вы можете просто использовать:

get_class($this);