$foo = new B($this);
code comme celui-ci ne correspond malheureusement pas à mes besoins. Existe-t-il un autre moyen d'accéder aux propriétés de l'objet parent?
Je vais essayer d'expliquer pourquoi. Nous écrivons un logiciel de jeu et certaines classes ont des dépendances très "inhabituelles" et s'influencent mutuellement de différentes manières. C'est pourquoi le code devient parfois presque insupportable sans liens avec les parents dans tous les cas (parfois même plusieurs parents de différents contextes, c'est-à-dire une escouade peut appartenir à Battle et à l'utilisateur etc ...).
Et maintenant la raison pour laquelle les liens ne me satisfont pas. Lorsque je génère une sortie pour le client, j'utilise une sorte d'objets sérialisants en XML. Cela fonctionne très bien jusqu'à ce qu'il rencontre des références récursives comme ces liens aux parents. Je peux les protéger, mais ils perdent leur usage, c'est-à-dire(Exemple fictif)
$this->squad->battle->getTeam($tid)->getSquad($sqid)->damageCreature(...);
L'autre façon - de mettre en œuvre la méthode de sérialisation dans toutes les classes sérialisable et l'appeler à l'intérieur sérialiseur comme ceci:
$obj->toXML($node);
$this->appendChild($node);
mais qui est beaucoup de choses à écrire et à soutenir! Et parfois, je génère dynamiquement les objets pour le sérialiseur (moins de trafic).
Je pense même à un hack: pour "apprendre" le sérialiseur à ignorer certaines propriétés dans certains classess)). Huh ... mauvaise idée ...
C'est une longue discussion, mais croyez-moi, le registre et l'observateur ne correspondent pas. Y a-t-il d'autres idées?
Merci. Dans mon cas particulier, le modèle de registre s'applique en effet. (La classe A ouvre plusieurs liens de base de données et doit transmettre des informations de configuration à B et à d'autres classes.) –