2009-07-31 26 views
13

Czy można uzyskać nazwę klasy najwyższego poziomu z rozszerzonej klasy, bez ustawiania jej z klasy najwyższego poziomu. Zobacz przykład poniżej, chciałbym uzyskać "Foo" z bazy. Wiem, że mógłbym ustawić zmienną z Foo, ale mając nadzieję na pominięcie dodatkowego kroku.Uzyskaj nazwę klasy z rozszerzonej klasy

Dzięki.

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+)

Odpowiedz

25

Zastosowanie:

get_class($this); 
+0

Nie wiem, komu przypisać to. Wybieram pierwszą z odpowiedzią. –

25

get_called_class() dla klas statycznych lub get_class($this) dla instancji.

get_called_class(), jak powiedział Jason, został wprowadzony w PHP 5.3

+1

'get_called_class()' jest dostępny tylko od 5.3 – jason

+5

Uwielbiam PHP 5.3. –

+1

Od PHP 5.5 można używać 'static :: class' zamiast' get_called_class() 'oraz' get_class ($ this) '. –

3

można po prostu użyć:

get_class($this);