Logo lms Le Mâle Saint Le côté obscur du mâle.

Le PHP et la méthode MVC : je facilite, je clarifie !

99501472987289505 5sh4begm f
Vous êtes peut-être nombreux à ne pas connaître le MVC (Modèle-Vue-Contrôleur). C’est une méthode qui permet de découper son code en trois parties afin de faciliter la maintenance de celui-ci et de clarifier le code pour qu’un webdesigner, par exemple, puisse venir intégrer son design sans avoir besoin de l’aide du développeur et inversement. En gros, cette méthode vous oblige à créer 3 fichiers distincts : - le modèle, une classe bien souvent ; - la vue, qui permet l’interaction avec le client (tout le code html et des variables PHP si la page est dynamique) ; - le contrôleur, qui va faire le lien entre la vue et le modèle. Créer 3 fichiers peut paraître contraignant. Je l’avoue, j’étais un peu sceptique à mes débuts en développement mais depuis que je l’ai essayé, je l’ai adopté.

Cette méthode peut demander un peu plus de temps pour le codage puisqu’il faut gérer 3 fichiers au lieu de tout regrouper dans un seul. Ceci dit, je vous assure que, lorsque vous aurez besoin de debugger ou de faire une modification quelques mois plus tard, vous serez bien content d’avoir utilisé ce système. Et oui, vous saurez exactement où il est nécessaire de faire la modification.

Une requête à modifier ? Hope, je vais voir du côté du modèle. Une condition à changer ? Je vais regarder le contrôleur. Et si c’est juste une variable à ne plus afficher ? Il suffit simplement de modifier la vue ! Si, en plus de cela, vous utilisez un template pour la vue… Je pense que vous avez tout compris.

Un template pour la vue, je ne comprends pas ? Un template, c’est une sorte de plugin que l’on installe pour simplifier le code qui se trouve dans la vue. Celui que j’ai toujours utilisé avec PHP est Smarty (qui est le template par défaut de Prestashop d'ailleurs). Un template permet surtout de ne pas avoir de PHP, dans notre cas, dans la vue, mais des variables Smarty assignées dans le contrôleur. C’est un gain de clarté dans votre code : plus besoin d’ajouter à chaque ligne le « < ? echo $mavar ?> » mais juste « {$mavar} ».

Et surtout, si vous bossez avec un webdesigner, il vous en saura reconnaissant !

Crédit photo : Blog des Nouvelles Technologies

Pour suivre le Mâle saint plus facilement, retrouvez-nous sur Facebook :)


Vous avez aimé ? Partagez cet article:



Les réactions

  • erysfoly Le 21 Mar 2012

    Rien que le titre m'a fait paniquer mais j'ai tout de même ouvert l'article ! :)

    Bon, en ayant fait l'année dernière (sans grande réussite, je ne comprends toujours rien au MVC), je me devais de lire cet article... Sauf que ! Ben j'aime pas, ça me donnerait presque de l'acné ! x) (le pire c'est qu'il me semble que j'ai bossé sur un projet construit avec cette méthode pendant mon stage... Et j'y arrivais. Mais dès que mon maître de stage m'a aligné ces 3 lettres, mon cerveau a crashé... )

    Donc je le garde précieusement en favoris et le jour où j'en aurai besoin, je le ressortirai, toute heureuse de pouvoir essayer de piger le MVC ! :)

    En tout cas, merci (à l'avance) pour cet article, qui à première vue me semble bien écrit ! :)

  • Myd Lan Le 23 Mar 2012

    Le MVC... J'en ai bouffé pendant mes études!!!
    Mais le php c'est vraiment pas mon truc. Rien que ne pas savoir de quel type sont mes variables... c'est même pas la peine! J'ai jamais aimé ni le php ni mes cours sur le MVC!
    Et encore moins les projets que j'ai du faire en MVC...

  • Yannick Le 30 Mar 2012

    Le design pattern MVC est un vaste sujet qui pose souvent polémique dans son implémentation ('utilisation ou non de moteur de template, le contrôleur doit il être une procédure ou un objet...) Ton article est fort intéressant, il résume bien le concept.

  • Romain Le 01 Apr 2012

    Il existe des Frameworks comme Symfony ou CakePHP, plus simples qu'une implémentation complète et qui possèdent des méthodes de "routing" avancées (la grande force du MVC).

  • bechir Le 29 Jun 2012

    La figure qui décrit l'architecture MVC est fausse, car le browser ne reçoit rien depuis le controleur mais plutot depuis les view et les view n'envoient rien non plus au controleurs

    • Fred Le 13 Nov 2013

      Je suis d'accord avec Bechir. La figure qui décrit l'architecture MVC est fausse.
      voila une figure correcte : http://bpesquet.developpez.com/tutoriels/php/evoluer-architecture-mvc/images/3.png

  • Georges Le 01 Jul 2012

    Et bien en fait, le browser reçoit tout du contrôleur mais le contrôleur ne reçoit rien en tant que tel de la view.
    La view est bien souvent inclut dans le contrôleur, avec la méthode « include » par exemple.
    Et les variables se trouvant dans la view sont initialisées dans le contrôleur.
    Mais le schéma montre plutôt qu’il y a une relation entre le contrôleur et la view. (Je vous avoue que ce n’est pas explicite pour le coup).
    J’espère vous avoir éclairé sur le sujet.

  • Démonarc Le 19 Feb 2013

    Merci d'éclaircir la signification du terme template.
    Je cherchais à comprendre ce que c'était depuis ce midi.
    Surtout qu'en utilisant emacs pour écrire mes codes, ça me sera certainement utile vu que sa gestion de l'indentation foire dès que je mélange un peu trop PHP et HTML.

Découvrir d'autres articles

Le vendredi c'est Freebies #4

Quatrième distribution de freebies ! Comme d'habitude, Teddy se charge de partager ses meilleures trouvailles de l'Internet pour bien finir la semaine. Alors oui, messieurs (et mesdames) les webdesigners, intégrateurs et tous les gens qui font le web, vous allez être comblés. Le vendredi c'est Freebies, votre nouveau rendez-vous ultra-geek-o-phile.