Recorriendo todas las propiedades del objeto php

84

¿Cómo puedo recorrer todas las propiedades del objeto? Ahora mismo tengo que escribir una nueva línea de código para imprimir cada propiedad del objeto

echo $obj->name;
echo $obj->age;

¿Puedo recorrer todas las propiedades de un objeto usando foreach loop o cualquier loop?

Algo como esto

foreach ($obj as $property => $value)  
Daric
fuente
1
Vaya con el foreachbucle que está haciendo bien
Shakti Singh
6
Utilice un foreach(con =>no ->) para recorrer las propiedades públicas del objeto . También puede hacer que su clase sea Traversable si desea otro comportamiento.
netcoder
@netcoder: gracias, pero solo fue un error tipográfico
Daric
2
como dijo netcoder: solo se podrá acceder a las propiedades públicas
Andreas

Respuestas:

139

Si esto es solo para depurar la salida, puede usar lo siguiente para ver todos los tipos y valores también.

var_dump($obj);

Si desea más control sobre la salida, puede usar esto:

foreach ($obj as $key => $value) {
    echo "$key => $value\n";
}
David Harkness
fuente
9
"El objeto de la clase stdClass no se pudo convertir en una cadena" bien podría ser un error resultante si el objeto no es una matriz.
aterrizó el
print_r ($ obj); también puede ayudar. Imprime los campos de un objeto dado de forma recursiva.
fandasson
8

Para propósitos de prueba, uso lo siguiente:

//return assoc array when called from outside the class it will only contain public properties and values 
var_dump(get_object_vars($obj)); 
Dimi
fuente
1

Aquí hay otra forma de expresar la propiedad del objeto.

foreach ($obj as $key=>$value) {
    echo "$key => $obj[$key]\n";
}
Budove
fuente
2
Esto solo funciona si el objeto implementa \ArrayAccesso es un array, de lo contrario se lanza lo siguiente:FATAL ERROR Uncaught Error: Cannot use object of type SomeType as array
NoodleOfDeath
1

A veces, es necesario enumerar las variables de un objeto y no con fines de depuración. La forma correcta de hacerlo es usando get_object_vars ($ object). Devuelve una matriz que tiene todas las variables de clase y su valor. A continuación, puede recorrerlos en un bucle foreach. Si se usa dentro del objeto en sí, simplemente haga get_object_vars ($ this)

JG Estiot
fuente