Pergunta

Vamos dizer que eu tenho este código:

<?php
class hello {
    var $greeting = "hello";
    function hello(){
        echo $this->greeting;
        return;
    }
}

$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>

Como faço para obtê-lo ecoar todos os nomes dos objetos instanciados (e se possível a sua respectiva classe), para que ele ecos (possivelmente em uma matriz) "hello1 => Olá, hello2 => Olá, hello4 => Olá ".

Se isto não for possível, existe alguma maneira de dizer o nome da instância de dentro da classe, algo como echo instance_name ($ this); ia me pegar "hello1". Obrigado.

Foi útil?

Solução

Você poderia chamar get_defined_vars para obter uma matriz de todos os objetos presentes, e em seguida, usar get_class para obter os nomes de classe para cada um (código não testado, mas deve funcionar):

$vars = array();
foreach (get_defined_vars() as $var) {
    $vars[$var] = get_class($var);
}

FYI, que você chama de "classe declarada" é mais conhecido como um "objeto".

A sua segunda pergunta não é possível. Tomemos, por exemplo:

$hello1 = $hello2 = new hello();

Agora, se eu chamar instance_name, deveria retornar 'hello1' ou 'hello2'?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top