- PHP : Une class sitemap pour afficher l'arborescence de votre site. - CodeS SourceS
- Visual Basic / VB.NET : Code permettant d'afficher une arborescence ad dans une treeview. - CodeS So
- Php5 my explorer : affiche l'arborescence de dossiers
- Créer un label dans une classe et l'afficher sur le form1
- Récupérer un String d'une classe et le retourné a une autre classe et l'afficher
Je te conseille donc de ne pas t'occuper des CSS.
Tes classes peuvent produire des données brutes (des tableaux, des itérateurs, etc). Des classes spécialisées peuvent ensuite mettre en forme ces données, dans ton cas, tu t'occuperas du XHTML. Tu mets les données en forme selon un format de présentation des données.
Les CSS c'est juste pour embellir.
MVC n'est qu'un design pattern, que tu es libre de respecter ou non.
Il semble effectivement que ASP.net ne respecte pas tellement MVC. Je dis "semble", parce que je ne connais pas du tout ASP.net. Cependant, il semble manifeste qu'il permet d'aller carrément à l'encontre de MVC (libre à chacun j'imagine d'utiliser les méthodes fournies ou d'autres de son choix).
Une méthode setCssClass() de la classe oSiteMap est manifestement contraire à MVC : tu mélanges dans ce cas le modèle (ou le contrôleur) et la vue.
Ce ne doit pas être à cette classe de gérer les CSS. La raison est simple : ça implique trop de changements lors de l'intégration.
Si le développeur qui veut intégrer ta classe dans son site souhaite modifier ses CSS (ce qui est tout à fait légitime...) il devra en plus se fader la méthode setCssClass de ta classe. Si tout le monde fait pareil, il devra faire pareil pour TOUTES les classes qui produisent un affichage. On en revient à un développement mal pensé où pour modifier une couleur on doit faire 250 modifications, dans toutes les sources intégrées pour les mettre en adéquation graphique avec son site.
Un classe du modèle doit fournir des données brutes et rien d'autre. Pas de mise en forme, ce n'est pas son travail.
Les données brutes doivent pouvoir être facilement mises en pages par l'utilisateur. Pour cela, on peut imaginer une classe pour chaque type d'affichage (XML, XHTML, PDF, PNG, LaTeX, Texte brut, etc). Dans ton cas, tu n'en implémenterais qu'une : celle dont tu as besoin ; mais l'utilisateur pourrait facilement la réécrire (en écrire une autre) qui lui permettrait de produire du HTML 3.2 avec des tableaux (beurk), du XML, ou autre.
A toi de penser suffisament bien les données produites pour qu'elles puissent être mises en page facilement.
Concrètement, un ID pour le bloc de plus haut niveau. Les autres éléments que celui-ci contient peuvent alors être accédés depuis celui-ci :
#site_map ul li
Est-ce que c'est plus clair ?
Apparemment, tu as considéré ma classe faisant partie du modèle dans un concept de développement MVC (Modèle Vue Contrôleur).
Moi, j'avais considéré ma classe comme un composant que l'on pourrait comparer avec un composant ASP.Net tel qu'un label.
Le composant label possède des méthodes qui permettent de traiter les données (ex : la propriété .Text) et des attributs qui permettent de modifier l'apparence (ex : .Forecolor pour la couleur du text).
rmq : Je ne pense pas que ASP.Net soi respecte la logique MVC.
Enfin, pour en venir à ma question, pourquoi ma classe ne pourrait-elle pas être considérée comme un composant avec des attributs (d'affichage) et des méthodes au même titre que le label d'ASP.Net?
___
Pour ne pas utiliser les templates, que je ne maîtrise pas encore, serait-il correct de faire une classe sitemap.class.php (sans HTML) et un controller sitemap.controler.php (avec HTML, CSS)qui aurait des propriétés tel que : image de séparation, class css, ... ect
le controler hériterait de la class?
je sais que dans ce cas, le php serait tout de même dans le html mais de cette manière :
$oSiteMap = new SiteMap_controler();
$oSiteMap->setImageUrl = "";
$oSiteMap->setCssClass = "";
$oSiteMap->setSecurity = "";
$oSIteMap->printSitemap();