2008-09-22 5 views
7

J'essaye d'écrire une fonction qui formate chaque membre (chaîne)/variable dans un objet, par exemple avec une fonction de rappel. Les noms de variables me sont inconnus, il doit donc fonctionner avec des objets de toutes les classes.PHP: array_map sur l'objet?

Comment puis-je obtenir quelque chose de similaire à array_map ou array_walk avec des objets?

Répondre

9

utilisez get_object_vars() pour obtenir un tableau associatif des membres et utilisez les fonctions que vous avez mentionnées. En outre, vous pouvez également faire un foreach sur un objet comme vous le feriez sur un tableau, ce qui est parfois utile aussi.

+0

Merci, l'approche foreach me semble la meilleure dans mon cas. –

+0

Notez que dans le cas rare où vous utilisez un 'ArrayObject', vous pouvez faire quelque chose comme' $ obj-> exchangeArray (array_map ('func', $ obj-> getArrayCopy())); ' –

1

Vous pouvez utiliser get_object_vars(), mais si vous avez besoin de plus de contrôle, essayez d'utiliser reflection. C'est plus lent que get_object_vars() (ou get_class_methods() d'ailleurs), mais c'est beaucoup plus puissant.

+0

c'est vraiment fonctionnalité cool de php je ne savais pas! Je ne sais pas exactement comment je l'utiliserais, mais c'est quand même cool! – nickf