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.

¿Fue útil?

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'?

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