web-dev-qa-db-fra.com

Fonction PHP pour lister tous les attributs des objets

Existe-t-il une fonction permettant de répertorier tous les attributs de l'objet (comme les méthodes et les propriétés publiques) dans PHP de la même manière que dir() de Python?

21
Alex

PHP5 inclut une API de réflexion complète pour aller au-delà de ce que l'ancien get_class_methods } et get_object_vars peuvent faire.

16
Paul Dixon
Reflection::export(new ReflectionObject($Yourobject));
12
Anti Veeranna

Vous pouvez utiliser les méthodes ReflectionClass::getProperties et ReflectionClass::getMethods de l'API Reflection (bien que l'API ne semble pas très bien documentée). Notez que PHP réflexion ne reflète que les informations de compilation, pas les objets d'exécution. Si vous souhaitez que les objets d'exécution soient également inclus dans les résultats de votre requête, utilisez de préférence les fonctions get_object_vars , get_class_vars et get_class_methods . La différence entre get_object_vars et get_class_vars est que le premier récupère toutes les variables d'un objet donné (y compris celles ajoutées dynamiquement au moment de l'exécution), tandis que le dernier ne vous donne que celles qui ont été explicitement déclarées dans la classe.

12
Candidasa

Vous pouvez utiliser get_object_vars pour répertorier les variables d'objet et get_class_methods pour répertorier les méthodes d'une classe donnée.

6
Vlad Andersen

Si vous voulez aller plus loin et aussi obtenir la variable privée de l'objet, vous pouvez utiliser la fermeture pour cela. comme:

$sweetsThief = function ($obj) {
  return get_object_vars($obj);
};

$sweetsThief = \Closure::bind($sweetsThief, null, $myobj);

var_dump($sweetsThief($myobj));
0
Toinou Wbr