2011-06-29 14 views
5
<?php 
class MyParent { 

    public static function tellSomething() { 
     return __CLASS__; 
    } 
} 

class MyChild extends MyParent { 

} 

echo MyChild::tellSomething(); 

El código anterior echos "MyParent". ¿Cómo puedo obtener el nombre de la clase de niño - en este caso "MyChild"? Si es posible ...Cómo obtener el nombre de clase del método hijo estático

Simplemente necesito saber qué niño está llamando al método heredado.

+1

duplicado posible de [¿Cómo puedo obtener el nombre de clase de una llamada estática en una clase de PHP extendida ?] (https://stackoverflow.com/questions/506705/how-can-i-get-the-classname-from-a-static-call-in-an-extended-php-class) – Theraot

Respuesta

7

__CLASS__ es una pseudo-constante, que siempre se refiere a la clase, donde se define. Con late-static-binding se introdujo la función get_called_class(), que resuelve el nombre de clase durante el tiempo de ejecución.

class MyParent { 

    public static function tellSomething() { 
    return get_called_class(); 
    } 
} 

class MyChild extends MyParent { 

} 

echo MyChild::tellSomething(); 

(como una nota al margen: por lo general métodos no necesitan saber la clase de se les llama)

Cuestiones relacionadas