2009-07-31 20 views
13

Es posible obtener el nombre de la clase de nivel superior de una clase extendida, sin establecerlo desde la clase de nivel superior. Vea el ejemplo a continuación, me gustaría obtener 'Foo' de la Base. Sé que podría establecer una variable de Foo, pero con la esperanza de omitir el paso adicional.Obtener el nombre de clase de la clase extendida

Gracias.

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

Respuesta

25

Uso:

get_class($this); 
+0

No sé a quién atribuirle esto. Así que elegiré el primero con la respuesta. –

25

get_called_class() para las clases estáticas o get_class($this) para instanciado.

get_called_class(), como dijo Jason, se introdujo en PHP 5.3

+1

'get_called_class()' sólo está disponible desde 5,3 – jason

+5

Me encanta PHP 5.3. –

+1

Desde PHP 5.5, puede usar 'static :: class' en lugar de' get_called_class() 'y' get_class ($ this) '. –

3

Usted puede simplemente utilizar:

get_class($this); 
Cuestiones relacionadas