Bonjour,
J'utilise php5 depuis quelques mois, et cela fait un moment que je me documente sur le modèle MVC. Mon soucis est que, bien que je pense que ce modèle permette de pouvoir avoir des modules fixes (mes classes modèles) réutilisables, et des modules customisable (les classes vues), j'ai l'impression que le MVC reste pour les sites un doux rêve. Je m'explique :
Je prendrais l'exemple d'un livre d'or.
- 1e défaut trouvé : même en séparant le modèle de la vue, un client peut vouloir ajouter des fonctionnalités à son livre d'or.
Ex : l'un veut afficher l'heure, le 2e veut gérer les émoticons, le 3e un système antispam, etc.
Dans ce cas, on peut créer un module "super complet" qui gère toutes les fonctionnalités, mais dans ces cas là on aura à terme une usine à gaz capable de tout faire, mais lentement (36 conditions pour voir quelle fonctionnalité est activée), et pas forcément de façon fiable, s'il y a trop de cas à prévoir.
Sinon, on est obligé de "customiser" ses classes modèles, et là on perd une grande partie de l'intérêt du mvc : avoir des modules réutilisables quel que soit le cas.
- 2e défaut trouvé : Utiliser un modèle MVC implique de diviser chaque module en 2 classes : l'une pour le modèle (commune), et l'autre pour la vue (différente pour chaque site). On se retrouve donc avec 2 fois plus d'objets à gérer, qu'il faut biensûr faire communiquer ensemble.
- 3e défaut trouvé : Ce modèle implique aussi l'ajout d'objets supplémentaires : si je veux que mon header aille chercher des infos (métas, title, keywords) dans une BDD, il va me falloir là encore 2 classes. Idem pour le footer, s'il doit afficher des données dynamiques (par exemple le temps d'exécution d'un script, ou le nombre de visites).
Je passe les autres défauts qui pourraient exister, pour en venir à ma question.
- Est-il vraiment utile, concrètement, de séparer modèle et vue, dans un site, en sachant qu'avec le CSS, il on peux déjà personnaliser l'affichage grandement, sans avoir à diviser en 2 toutes les classes?
- En termes de réutilisation, le modèle objet permet déjà de créer des modules réutilisables (ce qui n'était pas forcément le cas de PHP4), avec des variables de classe etc. Le modèle MVC ne complique-t'il pas la chose inutilement? Il suffit de coder "convenablement" l'affichage, utilisant des balises appropriées, et de modifier le design par CSS. A la limite, on peux consevoir une fonction "affichage" dans sa classe, qui ne s'occuperait que de cela.
- L'utilisation des exceptions avec un modèle MVC est pour moi une énigme. En effet, une vue ne pouvant pas appeler de modèle, vu que le modèle est le plus propice à générer des exceptions (forcément, c'est lui qui fait le traitement), les exceptions seront forcément récupérées par le contrôleur. Or, ce n'est pas son rôle d'afficher une erreur (affichage->vue)!
Bref au final, j'ai un peu l'impression que le modèle MVC est comme son nom l'indique... un modèle, mais théorique, et pas forcément applicable. Cependant, je préfère vous demander votre avis, à vous qui avez peut être une autre vision de la chose, qui utilisez ce modèle, et qui avez peut être compris des choses que je n'ai pas compris.
Que pensez-vous de mon analyse? Suis-je dans le vrai?
Partager