2009-07-31 13 views
13

Ist es möglich, den Namen der Top-Level-Klasse aus einer erweiterten Klasse abzurufen, ohne sie aus der Top-Level-Klasse zu setzen. Siehe Beispiel unten, ich möchte 'Foo' von Base bekommen. Ich weiß, ich könnte eine Variable von Foo setzen, aber ich hoffe, den zusätzlichen Schritt zu überspringen.Abrufen des Klassennamens von der erweiterten Klasse

Danke.

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

Antwort

25

Verwendung:

get_class($this); 
+0

Ich weiß nicht, wem ich das anrechnen soll. Also werde ich den ersten mit der Antwort auswählen. –

25

get_called_class() für statische Klassen oder get_class($this) für instanziierte.

get_called_class(), wie Jason sagte, 5,3 in PHP eingeführt wurde

+1

'get_called_class()' seit 5.3 nur verfügbar ist, – jason

+5

Ich liebe PHP 5.3. –

+1

Seit PHP 5.5 können Sie 'static :: class' anstelle von' get_called_class() 'und' get_class ($ this) 'verwenden. –

3

Sie können einfach verwenden:

get_class($this); 
Verwandte Themen