Pregunta

De acuerdo, el título de la entrada puede ser un poco confuso.

Tengo este código:

class A {
    public static foo() {
        return get_called_class();
    }
}

class B extends A {

}

class C {
    public function bar() {
        echo B::foo();
    }
}

Salida: C

Lo que yo quiero entrar en foo () es el nombre de la clase de B. ¿Cómo puedo hacer esto sin cambios en la clase B I?

Saludos, Ene Oliver

PS:. __ __ CLASE, get_class () no están funcionando

¿Fue útil?

Solución

Antes de PHP 5.3, esto no es posible sin hacks y se conoce como tarde estática de unión, un término Googleable.

Si está interesado, aquí está el artículo SO con respuestas: Faking Late enlace estático antes de php 5,3

Otros consejos

Creo que se podría utilizar el clase Reflexión incorporada para eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top