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:
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 Racine - propriétés - enfants - [x] branche x - propriétés - enfants [...] - [x+1] branche x+1 [...]
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 ...
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; } } } }
Je suis ouvert à toute proposition/idée concernant ce souci
Merci d'avance !







Répondre avec citation



Partager