2008-09-22 10 views
7

Estoy tratando de escribir una función que formatea cada miembro/variable (cadena) en un objeto, por ejemplo, con una función de devolución de llamada. Los nombres de las variables son desconocidos para mí, por lo que debe funcionar con objetos de todas las clases.PHP: array_map en objeto?

¿Cómo puedo lograr algo similar a array_map o array_walk con objetos?

Respuesta

9

usa get_object_vars() para obtener una matriz asociativa de los miembros y usa las funciones que mencionaste.

Por cierto, también puede hacer un foreach en un objeto como lo haría en una matriz, que a veces es útil también.

+0

Gracias, el enfoque foreach parece ser el mejor en mi caso. –

+0

Tenga en cuenta que en el raro caso cuando está usando un 'ArrayObject', puede hacer algo como' $ obj-> exchangeArray (array_map ('func', $ obj-> getArrayCopy())); ' –

1

Puede usar get_object_vars(), pero si necesita más control, intente utilizar reflection. Es más lento que get_object_vars() (o get_class_methods() para el caso), pero es mucho más poderoso.

+0

que es realmente ¡Funcionalidad de php que no conocía! No estoy exactamente seguro de cómo lo usaría, ¡pero sigue siendo genial! – nickf