Czy istnieje funkcja wyświetlania wszystkich atrybutów obiektu (takich jak publiczne metody i właściwości) w PHP, podobnie jak w przypadku Pythona dir()
?Funkcja PHP do wypisywania wszystkich atrybutów obiektów
Odpowiedz
Można użyć get_object_vars
, aby wyświetlić listę zmiennych obiektu i get_class_methods
, aby wyświetlić listę metod danej klasy.
PHP5 zawiera kompletny Reflection API, który wykracza poza to, co mogą zrobić starsze wersje: get_class_methods i get_object_vars.
Reflection::export(new ReflectionObject($Yourobject));
Można użyć ReflectionClass::getProperties
i ReflectionClass::getMethods
metod refleksji API to zrobić (chociaż API nie wydają się być bardzo dobrze udokumentowane). Zauważ, że odbicie PHP odzwierciedla tylko informacje o czasie kompilacji, a nie obiekty środowiska wykonawczego. Jeśli chcesz, aby obiekty środowiska wykonawczego były również uwzględniane w wynikach zapytania, najlepiej użyj funkcji get_object_vars
, , get_class_vars
i get_class_methods
. Różnica między get_object_vars
a get_class_vars
polega na tym, że pierwsza pobiera wszystkie zmienne danego obiektu (w tym dynamicznie dodawane w czasie wykonywania), podczas gdy druga daje tylko te, które zostały jawnie zadeklarowane w klasie.
Bardzo pomocna i kompletna odpowiedź, dzięki! +1 –
Myślę, że jest ważny punkt, który należy dodać, gdy mówisz: "... get_class_vars podaje tylko te zmienne, które zostały wyraźnie zadeklarowane w klasie" i TAKŻE powiązane wartości są zadeklarowane w klasie (wartości domyślne), a NIE wartości środowiska wykonawczego. –
Uwaga: to nie działa z magicznymi metodami. – OIS