PHP mostrar nomes de todas as classes declaradas?
-
03-07-2019 - |
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.
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'?