Bonjour,

J'ai eu besoin pour une appli de développer un système permettant d'avoir une arborescence récursive, ce qui fut fait. Mon arbo est donc maintenant composée de divers objets s'imbriquant les uns dans les autres, et dispose de tout un tas de méthodes fort pratiques pour me deplacer dedans et en faire un rendu HTML selon mes besoins. Tout cela fonctionne, et c'est fort bien .

Maintenant, je me rends compte que, contrairement à ce que j'ai fait jusqu'à présent, je vais avoir véritablement besoin de modifier ce gros objet à la volée, et donc trouver et modifier certains points de mon arborescence sans tout recréer à chaque fois. Pour info, j'ai déjà un système de coordonnées me permettant de me renvoyer une branche précise, mais en copie, et que je ne peux donc que lire ... Mes coordonnées sont de la forme racine|x|x|x et permettent de se déplacer dans des tableaux en partant de la racine. Ex:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Racine 
 - propriétés
 - enfants
   - [x] branche x
     - propriétés
       - enfants [...]
   - [x+1] branche x+1 [...]
Pour l'instant, je fais donc (dans une méthode dédiée) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
			foreach ($coordonnees AS $position) {
				if ($position == 'racine') {
					//On récupère l'objet de base
					$Racine = $this->racine;
				}
				else {
					//On copie la branche dans une variable
					$Branche = $Racine->enfants[$position];
					if (get_class($Branche) == 'Branche') {
						if ($Branche->noeud == true) {
							//On remplace $Racine pour le prochain passage de la boucle
							$Racine = $Branche->enfants;
						}
					}
 
				}
			}
J'ai volontairement simplifié, mais c'est le concept. Un foreach me permet de descendre à chaque fois, mais évidemment je suis obligé d'écraser mon objet original pour la boucle suivante ...

Je suis ouvert à toute proposition/idée concernant ce souci


Merci d'avance !