PHP montre les noms de toutes les classes déclarées?
-
03-07-2019 - |
Question
Disons que j'ai ce code:
<?php
class hello {
var $greeting = "hello";
function hello(){
echo $this->greeting;
return;
}
}
$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>
Comment puis-je lui faire renvoyer tous les noms d’objets instanciés (et si possible leur classe respective), de sorte qu’il fasse écho (éventuellement dans un tableau) " hello1 = > bonjour, bonjour2 = > bonjour, bonjour4 = > bonjour ".
Si cela n’est pas possible, existe-t-il un moyen de dire le nom de l’instance à partir de la classe, quelque chose comme echo nom_instance ($ this); me chercherait "bonjour1". Merci.
La solution
Vous pouvez appeler get_defined_vars
pour obtenir un tableau de tous les objets présents, puis utiliser get_class
pour obtenir les noms de classe de chacun (code non testé, mais devrait fonctionner):
$vars = array();
foreach (get_defined_vars() as $var) {
$vars[$var] = get_class($var);
}
Pour votre information, ce que vous appelez une "classe déclarée". est plus connu en tant qu '"objet".
Votre deuxième question n'est pas possible. Prenons, par exemple:
$hello1 = $hello2 = new hello();
Maintenant, si j'appelle nom_instance
, doit-il renvoyer 'hello1' ou 'hello2'?