Jak mogę przeglądać wszystkie właściwości obiektu? Teraz muszę napisać nową linię kodu, aby wydrukować każdą właściwość obiektu
echo $obj->name;
echo $obj->age;
Czy mogę przeglądać wszystkie właściwości obiektu przy użyciu pętli foreach lub dowolnej pętli?
Coś takiego
foreach ($obj as $property => $value)
foreach
pętlą, którą robisz dobrzeforeach
(z=>
not->
), aby iterować po właściwościach publicznych obiektu . Możesz także ustawić swoją klasę jako zmienną, jeśli chcesz innego zachowania.Odpowiedzi:
Jeśli służy to tylko do debugowania danych wyjściowych, możesz użyć następujących elementów, aby zobaczyć również wszystkie typy i wartości.
Jeśli chcesz mieć większą kontrolę nad wyjściem, możesz użyć tego:
foreach ($obj as $key => $value) { echo "$key => $value\n"; }
źródło
Do celów testowych używam:
//return assoc array when called from outside the class it will only contain public properties and values var_dump(get_object_vars($obj));
źródło
Oto inny sposób wyrażenia właściwości obiektu.
foreach ($obj as $key=>$value) { echo "$key => $obj[$key]\n"; }
źródło
\ArrayAccess
lub jest anarray
, w przeciwnym razie wyrzucany jest następujący komunikat:FATAL ERROR Uncaught Error: Cannot use object of type SomeType as array
Czasami trzeba wymienić zmienne obiektu, a nie do celów debugowania. Właściwym sposobem jest użycie get_object_vars ($ object). Zwraca tablicę zawierającą wszystkie zmienne klasowe i ich wartości. Następnie możesz je zapętlić w pętli foreach. Jeśli jest używany w samym obiekcie, po prostu wykonaj get_object_vars ($ this)
źródło