Forum Programmation.php Récursivité entre deux objets (PHP)

Posté par  .
Étiquettes : aucune
0
31
juil.
2007
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  . Évalué à 3.

    dans ton probleme tu stockes en fait

    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  . Évalué à 1.

      Je dois pourvoir remonter vers la mere sans forcément connaitre celle-ci. c'est pour ca que je dois stocker l'info.

      Est-ce dangeureux d'utiliser ce genre de code, sachant que je ne fais jamais de comparaison entre les objets ?
      • [^] # Re: heritage ?

        Posté par  . Évalué à 2.

        sauf qu'en programmation objet, vu qu'il y a heritage, il n'y a probablement pas besoin de stocker la mere.

        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  (Mastodon) . Évalué à 4.

    (Je n'ai jamais fait d'objet en PHP, je répond au hasard)

    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  . Évalué à 1.

      Merci pour ton aide, mais je ne cherches pas à sérialiser mes objects. Je disais juste que c'est en les sérialisant (par hasar) que je me suis appercu de ca.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.