|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Inscription : janvier 2007 Messages : 42 ![]() |
Bonjour,
Je ne sais pas si ce post à sa place dans ce forum si ce n'est pas le cas je m'excuse par avance. Voilà j'aimerais avoir vos avis concernant ma manière de pratiquer la conception MVC avec PHP5. Cette pratique est nouvelle pour moi. J'ai lu les différents tutoriaux de developpez ainsi que ceux sur Zend Framework. Je ne souhaite pas utiliser Zend pour diverses raisons dont le fait que je travaille sur de "petits" projets persos. Je pense avoir bien compris comment ça doit fonctionner mais je veux être sur. Je vais donc vous expliquer comment je procède mais avant ma première question concerne le Front Controller, est-il obligatoire dans le modèle MVC ? Ou peut-on avoir simplement un controller par page ? Pour l'exemple concret, je travaille sur un moteur de forum. Voilà comment j'ai découper la première page c'est à dire celle qui liste les forums (et les catégories et sous-catégories dans mon cas) -un bloc Header (haut de page) (rien à voir avec les headers http) avec le menu du forum -un bloc Path qui indique l'endroit où on se trouve par rapport à l'index. (Index > Nom de la Catégorie > nom de la sous catégorie > nom du Forum > Sujet > etc...) -Un bloc ListOfCategories (donc liste des catégories , sous catégories et forums) -Un Bloc Footer Pour chaque bloc, j'ai au moins une classe modèle et une classe vue. Pour mon index.php j'ai donc le IndexController, une facade qui gère les différents modèles dont les vues ont besoin IndexFacade, une vue générale IndexFrontView qui elle gère les différents vues des blocs ci-dessus et génère le HTML. Je n'utilise pas de moteurs de templates pour générer mon code mais une collection d'objets représentant chacun un élément HTML et ce qu'il contient. Chaque vue renvoit un objet Div que le FrontView se contente de concaténer dans le body de la page. En fait avec un schéma ça sera plus clair : Schema MVC.png Déjà est ce que c'est une bonne approche du modèle MVC ? Ensuite mes doutes se situe plus au niveau de la manière de passer les données des modèles aux vues. Pour le moment, chaque modèle à une méthode GetData qui renvoie un ArrayObject contenant toutes les données que la vue correspondante à besoin. La vue les récupère dans un SetData(). Le Set data parcours le ArrayObject et créer les propriétés à la volée grâce à __set. En gros ça donne quelque chose comme ça pour la création de la page : Méthode de l'IndexController : Code :
Code :
Est ce une bonne manière de procéder ? Merci déjà de m'avoir lu jusqu'au bout Jo. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Clément Architecte Logiciel Inscription : avril 2008 Messages : 1 370 ![]() |
Je commence aussi à faire du MVC avec du PHP ( c'est bcp plus simple en Java :X ).
J'ai trouvé qq liens pour pourront surement t'aider : http://julien-pauli.developpez.com/t...vc-controleur/ ftp://ftp-developpez.com/tahe/fichie...mvc-250305.pdf Ce sont deux PDF qui explique bien, avec un gros exemple dans le second, mais le premier explique mieux ( à mon gout ) et surtout à partir des bases du MVC. |
|
|
00
|
|
|
#3 | |
|
Futur Membre du Club
![]() Inscription : janvier 2007 Messages : 42 ![]() |
Citation:
C'est également pour ça que je demande des avis sur ma manière de procéder pour être sur que je ne fais pas d'erreur. Je me suis bien pris la tête la semaine dernière pour savoir si je ne me compliquais pas trop la tache en procéder comme ça. Jusqu'à maintenant je n'ai travaillé que sur des petits sites et les seules séparation de code que j'utilisais c'était des classes pour les données et les calculs sur ces dernières, le controle des actions en début de script et l'affichage en fin de script. |
|
|
|
00
|
|
|
#4 |
![]() ![]() Clément Architecte Logiciel Inscription : avril 2008 Messages : 1 370 ![]() |
Avant tout, j'ai du mal à suivre ton raisonnement, donc y a des chances pour que ce qui va suivre te soit inutile
Pour répondre à qq questions, tu peux avoir un controller par page ce n'est pas un problème, par contre, j'ai un peu de mal à comprendre ton architecture, t'as des vues dans ton Modèle ? ou c'est juste leur nom ? et t'as englobé le tout dans le controlleur ? A vrai dire ton arbre est bizarre ^^ A te lire j'ai l'impression que t'as fais une découpe par bloc, et du coup pas vraiment un MVC. L'approche comme je la conçoit, mais j'suis pas spécialiste, c'est plutôt de faire d'un côté toutes les méthodes et fonctions => modèle, d'un autre d'attribuer toutes les actions à des méthodes => controleur, et enfin une partie qui récolte toutes les actions et met en place les résultats des fonctions appelées => vue. Du coup, j'aurais plutôt séparé comme ça plutôt que par classes. Avec d'un côté tes vues qui elles seules contiennent l'HTML, d'un autre tes fonctions et tes classes, et enfin la partie contrôleur qui gère l'évenementiel, dont effectivement la gestion des pages lues par exemple. Cependant, si tu ne bosses que sur des petits projets, et seul, oublie le MVC c'est pas prévu pour ça ! Tu te complique la vie, tu rajoutes du code, et perd un peu en efficacité. Le MVC n'a d'intérêt qu'à partir du moment ou la factorisation de code vaut la peine, et si t'es à plusieurs développeurs dessus. L'intérêt étant de pouvoir faire des modifs sur une couche qui ne gêne pas une autre couche où un second développeur fait des modifs, tout en ayant une très bonne portabilité. |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : janvier 2007 Messages : 42 ![]() |
En fait j'ai inverser Footer et FooterView dans mon schema (oui je sais c'est balot ^^)
En fait mon controller gère tout il crée la facade (modèle) et la vue générale (FrontView) La facade gère les différentes classes métiers requises par la page en cours La FrontView gère les différentes modules à afficher. Cela me permet de facilement rajouter un bloc d'affichage sur une page (par exemple les statistiques du forum, la liste des connectés). En fait le FrontView construit la page HTML elle récupère des autres blocs des autres classes xView. Jo. ps: Je peux pas oublier MVC si je veux devenir Developpeur web dans un grosse boite ^^ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com