2009-07-31 4 views
13

Est-il possible d'obtenir le nom de la classe de niveau supérieur à partir d'une classe étendue, sans la définir à partir de la classe de niveau supérieur. Voir l'exemple ci-dessous, je voudrais obtenir 'Foo' de base. Je sais que je pourrais définir une variable à partir de Foo, mais en espérant passer l'étape supplémentaire.Récupère le nom de classe de la classe étendue

Merci.

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

Répondre

25

Utilisation:

get_class($this); 
+0

Je ne sais pas à qui créditer cela. Je vais donc choisir le premier avec la réponse. –

25

get_called_class() pour les classes statiques ou get_class($this) pour instancié.

get_called_class(), comme Jason a dit, a été introduit en PHP 5.3

+1

'get_called_class()' est uniquement disponible depuis 5.3 – jason

+5

J'aime PHP 5.3. –

+1

Depuis PHP 5.5, vous pouvez utiliser 'static :: class' à la place de' get_called_class() 'et' get_class ($ this) '. –

3

Vous pouvez simplement utiliser:

get_class($this); 
Questions connexes