PHP muestra los nombres de todas las clases declaradas?
-
03-07-2019 - |
Pregunta
Digamos que tengo este código:
<?php
class hello {
var $greeting = "hello";
function hello(){
echo $this->greeting;
return;
}
}
$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>
¿Cómo puedo hacer que se haga eco de todos los nombres de objetos instanciados (y, si es posible, de su clase respectiva), de manera que se haga eco (posiblemente en una matriz) " hello1 = > hola, hola2 = > hola, hello4 = > hola " ;.
Si esto no es posible, ¿hay alguna forma de decir el nombre de la instancia desde dentro de la clase, algo como echo instance_name ($ this); me conseguiría " hello1 " Gracias.
Solución
Puede llamar a get_defined_vars
para obtener una matriz de todos los objetos presentes, y luego usar get_class
para obtener los nombres de las clases para cada uno (código no probado, pero debería funcionar):
$vars = array();
foreach (get_defined_vars() as $var) {
$vars[$var] = get_class($var);
}
Para tu información, lo que llamas una " clase declarada " es más conocido como un " objeto. "
Tu segunda pregunta no es posible. Tomemos, por ejemplo:
$hello1 = $hello2 = new hello();
Ahora, si llamo a nombre_instancia
, ¿debería devolver 'hello1' o 'hello2'?