Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. PHP et JavaScript
  3. L'architecture MVC
Extrait - PHP et JavaScript Dynamisez vos sites et applications web (avec exercices et corrigés)
Extraits du livre
PHP et JavaScript Dynamisez vos sites et applications web (avec exercices et corrigés) Revenir à la page d'achat du livre

L'architecture MVC

Introduction

Ce chapitre n’est pas spécifique à PHP, mais expose succinctement une autre façon de programmer, en utilisant l’architecture MVC (Modèle Vue Contrôleur).

La plupart des frameworks proposent cette programmation qui consiste à dissocier les traitements ou le moteur de votre programme (Contrôleur), les présentations ou les pages de votre site (Vues), ainsi que les données et les accès à la base de données (Modèle).

Les bonnes pratiques de programmation en MVC consistent également à ne pas mélanger le code PHP, JavaScript, HTML, CSS... D’autre part, il est fortement conseillé de choisir des noms de variables en anglais, ainsi que de rédiger des commentaires, pour que ce soit le plus explicite possible pour quelqu’un qui passerait derrière votre code pour le compléter en termes de fonctionnalités.

L’architecture MVC utilise également les concepts de la programmation orientée objet ou POO (cf. chapitre Les objets).

Les avantages de cette architecture

L’architecture MVC est modulaire, chaque composant du projet est sauvegardé dans un fichier distinct et comporte l’ensemble des variables et fonctions qui interagissent entre elles. Ce composant n’a qu’un seul rôle (par exemple : la gestion d’un utilisateur et toutes les fonctions qui gravitent autour, comme avoir toutes les informations le concernant, son nom, prénom, s’il est actuellement connecté, etc.).

Ce concept présente donc les avantages :

  • d’être réutilisable, par vous ou d’autres développeurs,

  • d’être facilement modifiable, vous pouvez le faire évoluer en ajoutant de nouvelles fonctionnalités, etc.,

  • d’être bien structuré, chaque partie du code ayant un rôle bien spécifique.

Fonctionnement MVC

Comme présenté ci-dessus, MVC sont les abréviations de Modèle-Vue-Contrôleur qu’on pourrait présenter comme ceci :

images/bdd.png

Le modèle représente les données, la plupart du temps stockées dans des systèmes de bases de données.

images/html.png

Les vues forment les pages du site, le code HTML doit représenter plus de 75 % du contenu, mais on peut y trouver également un peu de code PHP pour ce que HTML ne sait pas faire, comme par exemple les boucles, etc.

images/moteur.png

Les contrôleurs représentent la logique du site, c’est le code qui interagit entre les vues et les modèles :

images/schemach15.PNG

Ces trois éléments sont indépendants les uns des autres, c’est le contrôleur qui fait le lien entre eux.

Pour exposer cette architecture avec un exemple, imaginez un utilisateur qui demande à consulter les véhicules de marque Peugeot. Le contrôleur va alors prendre cette requête utilisateur pour interroger le modèle qui lui retournera la liste des véhicules de la marque demandée. Le contrôleur se chargera alors de renvoyer ses données à la bonne vue qui affichera ainsi une liste à l’écran avec les critères demandés.

Ceci est un exemple très simple, évidemment le contrôleur peut faire beaucoup plus, rappelez-vous bien, c’est la logique...

Le routeur

Un projet conséquent comporte logiquement plusieurs contrôleurs, modèles et vues. Chaque contrôleur gère une action bien précise sur le site (par exemple l’authentification d’un utilisateur, une demande d’historique d’information, etc.).

Mais alors, comment savoir quel contrôleur appeler pour exécuter une action déclenchée par l’utilisateur ?

Eh bien, on inclut une nouvelle couche, qui est le routeur, c’est lui qui se chargera de faire appel au contrôleur adéquat, qui exécutera à son tour la bonne action, celle demandée par l’utilisateur.

On parle très souvent de routes, il s’agit en fait d’URL spécifiques en fonction des demandes des utilisateurs. Prenez par exemple le site des Éditions ENI, la page d’accueil est représentée par l’URL https://www.editions-eni.fr/, c’est la base de toutes les URL du site, la route principale est donc "/".

Si l’on clique sur un des onglets, "Supports de cours" par exemple, on tombe sur la route "/supports-de-cours" dans l’URL. Et ainsi de suite.

Le routeur se charge donc de gérer l’ensemble des routes (URL) du site, chaque route étant associée à un contrôleur, qui lui-même fait référence aux modèles et à...

Conclusion

Cette architecture est très répandue dans le développement des sites web et on la trouve dans de très nombreux langages (C, PHP, Java, JavaScript...). PHP, à travers les frameworks, utilise cette architecture qui permet donc une bonne lisibilité du code, dissocie les données de l’affichage et permet à plusieurs développeurs de travailler sur les mêmes composants en les faisant évoluer facilement.