Bonjour,
Dans le cadre du développement d'une appli, je me pose des questions au sujet de la récursivité d'objets.
Je m'explique :
J'ai une classe "mere" A ; et une classe "fille" B.
Dans A, il y a une propriété qui est un tableau d'objets de la classe B.
Chacun de ces objets de classe B a une propriété qui est l'objet A "mere".
Le code fonctionne correctement, mais l'orsque je sérialise un des deux objets, j'obtiens le message : *RECURSION*.
Je voulais savoir si s'est deprecated ou pas de faire ce genre de code, et si oui, pourquoi.
Merci pour votre aide :)
# heritage ?
Posté par NeoX . Évalué à 3.
dans A la liste des enfants
et
dans B les infos :
parent (lien vers A)
propriété Ba
propriété Bb
forcement ca finit par tourner en rond.
compte tenu que B depend de A (mere/fille) pourquoi remettre l'info mere dans fille ?
[^] # Re: heritage ?
Posté par zeev . Évalué à 1.
Est-ce dangeureux d'utiliser ce genre de code, sachant que je ne fais jamais de comparaison entre les objets ?
[^] # Re: heritage ?
Posté par NeoX . Évalué à 2.
A: je suis un vehicule à 4 roues
B: je suis une voiture (A + avec un capot)
C: je suis un quad (A+ selle)
en creant B tu recupere les infos de A c'est le principe d'heritage du pere vers le fils
donc B est forcement A...
mais je m'egare peut-etre de ton probleme.
# valeur ou référence
Posté par Yusei (Mastodon) . Évalué à 4.
Ton problème vient visiblement de la fonction de sérialization, pas de la récursivité de tes objets en elle même. Je suppose que la sérialisation ne gère pas les références des objets, et se contente de "les déplier" récursivement. C'est le même problème que pour faire une fonction "clone" qui duplique un objet "entièrement", et pas juste ses références vers d'autres variables.
Tu peux contourner le problème en codant toi-même une fonction de (dé)sérialization pour A et B: en sérializant A tu lui attribues un identifiant unique, et en sérialisant B tu identifies son parent avec cet identifiant unique au lieu de le re-sérializer.
Je ne sais pas s'il existe une manière plus propre de faire ça en PHP.
[^] # Re: valeur ou référence
Posté par zeev . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.