without type saber obtener objeto nombre namespace name get_class clase php oop

saber - php get class type name



PHP: get_called_class() vs get_class($ this) (5)

En PHP, ¿cuál es la diferencia entre get_called_class() y get_class($this) cuando se usa dentro de una instancia?

Ejemplo:

class A { function dump() { echo get_called_class(); echo get_class($this); } } class B extends A {} $A = new A(); $B = new B(); $A->dump(); // output is ''AA'' $B->dump(); // output is ''BB''

¿Hay alguna diferencia en este caso?

¿Cuándo debo usar uno u otro get_called_class() o get_class($this) ?


En este caso, no hay diferencia, ambos devuelven el nombre de la clase, pero la clase get_called tiene Enlace estático tardío


En este caso, no hay diferencia, porque $this siempre apunta a la instancia correcta desde la cual el nombre de la clase se resuelve usando get_class() .

La función get_called_class() está diseñada para métodos estáticos. Cuando se sobrescriben los métodos estáticos, esta función devolverá el nombre de la clase que proporciona el contexto para el método actual al que se llama.


La respuesta, en este caso particular, es: NO .

No hay diferencia.

Referencia: ( get_class($this) )

cadena get_class ([object $ object = NULL])

...

Si se omite el objeto dentro de una clase, se devuelve el nombre de esa clase.


No en este caso ... si dump era un método estático y eliminaba $this parámetro, entonces get_class devolvería "A" en ambos casos y get_called_class devolvería "B" cuando hiciera B::dump();


Para una alternativa mucho más rápida de get_called_class() en PHP> = 5.5, use static::class . Funciona para obtener la clase de nivel superior para las llamadas a métodos estáticos, así como para los métodos heredados.