Page 1 sur 1
Comment transformer un objet en Array
Posté : 27 mars 2009, 12:03
par gilles manouvrier
Bonjour,
Je n'ai pas trouvé de fonction toute faite permettant de transformer un objet en array.
Par exemple un objet "Ami" ayant pour attribut :
ami->nom="jhon";
ami->prenom="smith";
ami->ville="Lille";
Je voudrais savoir si une fonction existante sous php5 me retournerait
un tableau de type key value :
$tb["nom"]="jhon";
$tb["prenom"]="smith";
etc...
(en fait je dois passer un tableau dans un requête SOAP et en entrée j'ai des objets

)
Merci
Posté : 27 mars 2009, 12:11
par Calimero
Bonjour,
get_object_vars() tout simplement

Posté : 27 mars 2009, 23:25
par naholyr
Pire :
$array = (array) $object
Posté : 12 avr. 2009, 18:07
par Hywan
Hey

,
Avec beauuucoup de retard :
Object Iteration, ce qui t'évite de transformer ton objet en tableau

.
Posté : 16 avr. 2009, 20:25
par Genova
J'aurais plutôt conseillé l'interface ArrayAccess à ce moment là, plutôt que Iteration qui permet plutôt l'utilisation de collections.
Posté : 16 avr. 2009, 20:55
par Nagol
ou sinon get_object_vars qui te retourne un tableau avec les propriétés de ton objet, sans doute plus propre qu'un cast.
Posté : 16 avr. 2009, 21:37
par naholyr
Alors oui en passant il y a une très grosse différence entre un cast et l'utilisation de get_object_vars(), qui a son importance :
- get_object_vars($objet) renvoie un tableau associatif des propriétés publiques de l'objet
- (array) $objet retourne un tableau associatif avec *toutes* les propriétés de l'objet. Par exemple si $objet a une propriété "variable" protected, on pourra y accéder par $array[chr(0).'*'.chr(0).'variable'].
Je me dois donc de moinsser ma précédente réponse : le cast est une solution à effets de bord qu'il faut prendre en compte !
Posté : 17 avr. 2009, 09:24
par Hywan
Dans le lien que je propose, on voit que PHP permet de boucler sur certains attributs d'un objet, ce qui évite de le transformer en tableau. Par contre, si on continue notre lecture, on voit les interfaces Iterator et IteratorAggregate, mais ce n'était pas pour ça que je montrais le lien. Et ArrayAccess est différent de Iterator, on n'en a pas la même utilisation (c'est un avis personnel).
Posté : 17 avr. 2009, 11:32
par Calimero
Je me dois donc de moinsser ma précédente réponse : le cast est une solution à effets de bord qu'il faut prendre en compte !
Te moinsse pas trop vite, grâce à toi j'ai appris quelquechose

Merci.
+1
Re:
Posté : 24 mars 2012, 14:04
par tacata
bonjour j'utile
- (array) $objet retourne un tableau associatif avec *toutes* les propriétés de l'objet.
pour une propriete protected
Par exemple si $objet a une propriété "variable" protected, on pourra y accéder par $array[chr(0).'*'.chr(0).'variable'].
Pour une propriete private
je ne parviens pas à y accéder
Code : Tout sélectionner
SoapFault Object
(
[previous:Exception:private] => blablablablablabla
)
le simple $montab["Exceptionprevious"]
ne fonctionne pas
Pour conclure la méthode $array = (array) $object
est elle toujours d actualité en php5
comment accéder à une ex propriété "private"
bonne journée
Re: Comment transformer un objet en Array
Posté : 24 mars 2012, 15:06
par moogli
salut,
une propriété privée n'a pas à être accédée directement depuis l'extérieur d'un objet (sinon ça sert à rien de la mettre privée hein

).
Perso j'aurais plutôt utilisé une méthode "toArray()" dans l'objet afi de filer les infos que l'on souhaite et pas autre chose.
Les solutions fournie ci dessus sont beaucoup plus générique c'est vrai mais tu balance aussi des infos qui ne sont pas forcément pertinente !
@+