Bonjour à tous
Je suis nouveau sur le forum et la POO n'etant pas vraiment mon fort, j'ai toutes les difficultés du monde à résoudre un problème de conception qui me semble pourtant simplissime
Je travaille sur un outil qui se base sur un repository svn et qui affiche son contenu. Pour complexifier la chose j'ai des repertoires virtuels qui sont stockés dans des fichiers xml... Afin de recréer l'arborescence et lister des dossiers et leur contenu (dossiers virtuels ou non) j'ai créé plusieurs objets imbriqués
Hum.. Je ne sais pas si je suis très clair
Voyons un bout de code plutôt (j'ai essayé de simplifier au maximum)
Je stocke ainsi un tableau d'objets "dossier3" dans chaque objet "dossier2" et un tableau de "dossier2" dans chaque "dossier1"
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 class dossier1 { private $label; private $initpath; private $dossier2Array = array(); public __construct() { // constructeur avec appel de la methode getdossiers2 } public getdossiers2() { // je liste le contenu du dossier1 et je stocke dans dossier2Array les objets dossier2 obtenus } // getters et setters des attributs } class dossier2 { private $label; private $dossier3Array = array(); public __construct() { // constructeur avec appel de la methode getdossiers3 } public getdossiers3() { // je liste le contenu du dossier2 et je stocke dans dossier3Array les objets dossier3 obtenus } // getters et setters des attributs } class dossier3 { private $label; }
J'ai comme ca une arborescence jusqu'à 8 niveaux dans mon code et la se pose la question : comment je fais pour connaitre la valeur de l'attribut initpath de l'objet dossier1 qui contient un objet dossier3 donné ?
Je n'arrive qu'à finir par passer tout mes objets en paramètre dans les methodes "getdossiers" mais je suis persuadé qu'il y a plus simple, surtout qu'avec tous mes niveaux d'arborescence mon code devient rapidement illisible.
Quelqu'un a t'il déja eu le même genre de pb ? Avez vous des conseil à me donner ? Help![]()
Partager