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?
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.
Reflection::export(new ReflectionObject($Yourobject));
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.
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.
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));