2009-05-04 8 views
3

Disons que j'ai ce code:PHP afficher les noms de toutes les classes déclarées?

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

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

Comment puis-je obtenir à l'écho de tous les noms d'objets instanciés (et si possible leur classe respective), de sorte qu'il echos (peut-être dans un tableau) « hello1 => bonjour, bonjour2 => bonjour, bonjour4 => bonjour ".

Si ce n'est pas possible, est-il possible de dire le nom de l'instance à l'intérieur de la classe, quelque chose comme echo nom_instance ($ this); m'obtiendrait "bonjour1". Merci.

+1

Je ne voudrais pas éditer le titre, mais c'est un peu trompeur. Il n'y a qu'une classe déclarée, classe bonjour. Vous recherchez _instances_ de cette classe (ou de toute autre classe) et des variables qui référencent ces instances. – VolkerK

Répondre

9

Vous pouvez appeler get_defined_vars pour obtenir un tableau de tous les objets présents, puis utilisez get_class pour obtenir les noms de classe pour chacun d'eux (le code non testé, mais il 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 comme un «objet».

Votre deuxième question n'est pas possible. Prenons, par exemple:

$hello1 = $hello2 = new hello(); 

Maintenant, si je l'appelle instance_name, devrait-il revenir 'hello1' ou 'hello2'?

+0

True .. et combiner avec is_object si nécessaire pour trouver quelles vars sont des objets – Petrunov

+0

Ok, merci, je cherchais get_defined_vars(), mais je ne savais pas que les objets sont également là, je vais remercier encore un coup d'oeil, Merci. – Yifan

Questions connexes