MVC et PHP

Jusqu’à présent, je n’ai jamais été convaincu par un framework PHP. Tous ceux que j’ai testé étaient soit trop compliqués à mettre en oeuvre, soit trop gourmands en ressources, soit trop contraignants et la plupart du temps tout ça à la fois.

Paradoxalement, je n’avait jamais vraiment essayé de développer mon propre framework. J’ai préféré mettre en place des méthodes de développement et des choix conceptuels personnels que j’affine au fil des ans.

Dans le même temps, j’entends de plus en plus parler des design patterns et je dois dire c’est bigrement intéressant. J’utilise notamment les patterns singleton et factory dans certains développement. Ces derniers temps, je me suis intéressé au pattern MVC et cela a été comme une révélation pour moi.

Je me suis aperçu qu’à la manière de monsieur Jourdain, je faisais du MVC sans le savoir (Pardon Molière). En effet, en me plongeant dans ce design pattern, je me suis aperçu que les pratiques que j’avais mis en place au fil du temps suite à mes expériences, étaient très proches des principes du MVC.

MVC signifie Model View Controller, ou Modèle Vue Contrôleur en Français. Comme toute les bonnes idées, le principe est finalement assez simple. On divise une application en 3 couches distinctes. La première, le contrôleur, va gérer les demandes de l’utilisateur et contrôler les 2 autres couches. Le modèle va contenir les traitements métier et va être interfacé avec les sources de données (bases de données, fichiers plats, annuaires LDAP, etc.). Enfin, la vue va afficher le résultat des traitement effectués par le modèle.

Le premier avantage de ce découpage c’est que si l’une des couches doit changer, cela se fait sans toucher aux autres couches. Ainsi, si au lieu d’afficher des pages HTML, vous devez finalement renvoyer du XML qui sera utilisé par un Web service, seule la vue devra être modifiée.

Le second est qu’une fois le framework mis en place, les développements sont rapides car seul le code métier doit être développé. Tout le reste est géré par le framework.

Voici quelques lectures pour approfondir le sujet :

Ce contenu a été publié dans PHP. Vous pouvez le mettre en favoris avec ce permalien.

16 réponses à MVC et PHP

  1. Vincent dit :

    Le problème est que le pattern MVC s’appuie essentiellement sur le pattern Observer pour permettre au modèle de notifier la vue que les données ont changées et que celle-ci doit se mettre à jour en redemandant les données au modèle.

    Le modèle étant un script PHP sur le serveur et la vue une page web sur un navigateur, il est impossible pour le modèle de notifier la vue de changements éventuels dans les données et on perd ainsi un gros intérêt de MVC.

  2. perrick dit :

    C’est exactement comme cela que les patterns émergent dans un code que l’on reprend régulièrement !
    Le problème c’est souvent que une fois qu’on a découvert un ou plusieurs de ces modèles de conception, on s’y tient et on s’y bloque. Et tout devient "clou" puisqu’on a un nouveau marteau entre les mains ! L’artiste "zen" te dira qu’il faut maintenant oublier ce que tu viens de découvrir (zut je n’arrive pas à trouver le lien vers ce truc-là)

  3. Arnaud dit :

    Vincent: c’est le role du controleur de faire ca. Le modèle ne fait que décrire les données, les règles de validation, etc. Le but du controleur est de coordonner le tout.

    A regarder: un framework interessant http://www.solarphp.com

  4. qwix dit :

    C’est marrant Jean Marc mais je me suis posé exactement les même interrogations vendredi lol.

    Concernant la vue, tu peux implémenter un design pattern Strategy je pense, ainsi si tu doit gérer différent affichage (Web, téléphone portable, etc, etc) le fait d’utiliser Strategy te simplifiera la tâche je pense. Tu en penses quoi ?

    🙂

  5. JMF dit :

    Merci beaucoup qwix. 🙂

  6. qwix dit :

    C’est quand même assez incroyable la puissance et la profondeur de ce pattern.
    J’ai bien l’impression que l’on peut facilement passer des années dessus et découvrir des tonnes de choses encore…

    🙂

  7. De MVC aux Design Patterns

    Je me suis amusé il y a quelques semaines à étudier la plupart des frameworks PHP existants, étude largement soutenue par Damien Seguy qui s’est mis à interroger tous les auteurs pour Direction|PHP et j’ai été stupéfait du nombre de frameworks basés…

  8. Elucubrations dit :

    existe-t’il des ressources en "french in the text" ?
    ou mieux encore un framework en français ?
    merci

  9. JMF dit :

    Elucubrations> Le second lien que je donne à la fin de mon bilelt est en Français comme son titre l’indique. 😉

    Quant à trouver un framework en Français, je n’en connais pas et je doute que cela existe car l’intérêt serait assez limité.

  10. Frédéric dit :

    > Framework en français

    Il existe phpjaz.org/

  11. elucubrations dit :

    oui je connaissais déjà cette ressource elle est un peu "raide" sur la fin. Le début explique bien le concept mais après à mon avis ça devient un peu flou.
    Pour le framework en français c’est surtout au niveau doc que l’intérêt existe, il y en marre de se taper des docs techniques en anglais où la barrière de la langue nous fait passer à côté de subtilités de sens et donc de compréhension.

  12. JMF dit :

    Frédéric> J’ai commencé à regarder Jaz et je suis bluffé par les fonctionnalités de la chose. J’ai hâte de regarder sous le capot comment cela fonctionne.

  13. roul dit :

    Ou peut-on trouver un lien vers des cours, exos, TP implémentant simplement un site PHP conçu avec MVC

  14. Présentation de l’architecture MVC

    Le MVC, qu’est-ce que c’est ??!! Pourquoi l’utiliser ? et quelles sont les questions qui se pose avec ce design pattern ?

  15. Dready dit :

    C’est clair que c’est puissant le MVC comme design pattern. Au niveau framework celui sur lequel j’ai bloqué c’est Code Igniter ( http://www.codeigniter.com ). Tres simple, léger, une tres bonne documentation, des vidéos tutorial… énorme.

Les commentaires sont fermés.