PHP: ¿cómo puede una clase hacer referencia a su propio nombre?
En PHP, ¿cómo puede una clase hacer referencia a su propio nombre?
Por ejemplo, ¿cómo sería el método para hacer esto?
Dog::sayOwnClassName();
//echos "Dog";
ActualizarVeo que todos dicenget_class($this)
. Pero eso no es correcto. Eso funcionaría si estuviera creando unejemplo de perro Estoy preguntando sobre cómo llamar a un método de la clase Dog en sí. SiDog
se extiendeMammal
, luego una llamada aget_class($this)
dentro deDog
la clase devolverá 'Mammal'.
En otras palabras:
No estoy preguntando "cuál es la clase de la clase Perro", a lo que la respuesta es: "la clase Perro es miembro de la clase Mamífero".Tampoco estoy preguntando "dada una instancia de Dog the dog class (llamada Rover), ¿cuál es su clase?", A lo que la respuesta es "Dog".Lo que pregunto es: "¿Puede la clase Perro decirme 'mi nombre es Perro?'Por ejemplo:
class Mammal {
public function find_by_id($id){
$query = "SELECT * FROM " . $myclass . " WHERE `id` = " . $id;
//(etc)
return $matching_object;
}
}
class Dog extends Mammal {
//find_by_id method should know to do a SELECT from Dog table
}
Actualización 2La sugerencia de Yacoby deget_called_class()
fue correcto Así es como funciona en el ejemplo que di.
class Mammal {
public function find_by_id($id){
$myclass = get_called_class();
$query = "SELECT * FROM " . $myclass . " WHERE `id` = " . $id;
//(etc)
return $matching_object;
}
}
class Dog extends Mammal {
//find_by_id knows to do a SELECT from Dog table
//and will return the correct dog object
}