|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : février 2007 Messages : 226 ![]() |
Bonjour,
je fais appel à vous car j'ai un petit soucis. Je souhaite créer une liste d'éléments et sous-éléments (ul li) sur potentiellement plusieurs niveaux le tout en objet. test -- test1 -- test2 et "potentiellement" : test -- test1 -- test 22 -- test2 -- test18 -- test14 J'ai une classe Navigation et une classe SubNavigation. Navigation héritant de SubNavigation et la relation étant la suivante : Navigation 1 ----------------- * SubNavigation Du coup, je suis parti sur le design pattern Objet Composite qui semble correspondre à ce que je souhaite faire. Est ce le bon choix ? Auriez-vous un exemple dans le genre que je recherche ? Merci |
|
|
00
|
|
|
#2 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Selon moi, le composite est un poil trop fort pour ce que tu cherches à faire à moins que tu ne veuille par exemple dimensionner les noeuds fils en utilisant un parent quelconque. Un héritage (et éventuellement une interface) devrait largement suffire.
De plus tu n'as pas vraiment besoin de créer ces classes de toute pièce, tu peux tout simplement étendre la classe DOMElement en l'équipant de nouvelle méthode pour générer automatiquement la liste à partir d'un tableau par exemple. Si tu souhaite faire quelque chose de plus simple, tu peux étendre une de mes classes: BaseHelper qui sert à fabriquer un noeud XML et donne des méthodes pour ajouter des noeuds fils et manipuler ses attributs. Code :
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#3 | ||||||
|
Membre du Club
![]() Inscription : février 2007 Messages : 226 ![]() |
Merci pour ta réponse Benjamin mais je suis parti sur la solution du Composite en moins évoluer.
Voici ce que j'ai fait 1. Classe Navigation (hérite de NavigationElement) Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#4 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
J'aimerai bien que tu m'explique où est le composite dans le code que tu fournis... Là je vois de l’agrégation tout au plus.
Deuxième chose: tu pourrais tirer avantage des méthodes magiques comme __toString qui permettent la conversion objet > chaine de caractères. Enfin, je ne vois pas d'utilité particulière à ton héritage, je ne vois pas non plus de justification. Bref, relis les sources que je t'ai passé et repense à tout ça.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
Copyright © 2000-2012 - www.developpez.com