Le paradigme MVC

Je vais tenter de démystifier un concept abstrait, et pourtant très important pour les projets d’envergures : le MVC. Celui-ci vous permettra de mieux structurer votre application, et ainsi gagner en flexibilité et maintenabilité.

Qu’est-ce que le MVC ?

Lorsque l’on développe un programme en Java ou en C, il n’y a qu’une seule porte d’entrée : le main. C’est dans ce fichier que sont stockées les instructions concernant la marche à suivre de notre application, ainsi que l’ordre dans lequel les traiter. C’est donc par ce fichier qu’il faut passer en premier, avant de voir les données.

Pour un site web, constitué de plusieurs pages, il y a par contre plusieurs portes d’entrée : chaque page représente un accès potentiel. Dès lors, comment faire pour éviter que n’importe qui puisse accéder à toutes les pages ? En d’autres termes, comment controller les informations sortant de notre serveur ?

Une solution générale consiste en l’utilisation du MVC, ce qui signifie Model View Controller. Ce pattern est applicable à différents langages, et consiste à structurer notre application afin de donner un rôle unique à chaque composant. Ainsi, nous aurons au minimum trois couches :

– Model :

Il est chargé du CRUD (Create Read Update Delete), c’est à dire tous les accès à la base de données (BDD). Il s’occupe également de vérifier les données à enregistrer.

– View :

Ce composant s’occupe uniquement de la partie vue, c’est-à-dire de l’affichage des données. Il ne doit pas avoir de gros calculs à faire. Tout au plus quelques boucles d’affichage, ou du JavaScript afin d’avoir un minimum de vérification sur les données entrées par le client.

– Controller :

Il sera en quelques sortes l’aiguilleur de notre application. Il n’agit pas sur la mise en forme, et ne modifie pas les données entrantes ou sortantes. Son seul et unique rôle est d’appeler le Model correspondant à la requête du client, et de diriger le résultat vers la vue adéquate.

Dans des projets complexes, on pourra créer un Model et un Controller principal, de préférence en classes abstraites. Les classes en héritant ajouteront les méthodes ou les fonctions spécifiques à leur rôle. Dans ce cas, on pourra parler de MVC 2.

Cheminement d’une requête client :

Celui-ci veut accéder à la page d’accueil de notre site. Sa requête arrive donc au Controller de notre application. Elle est analysée, puis le Controller appelle la méthode du Model correspondant. En l’occurrence, cela peut-être « récupérer les 5 derniers articles ».

 Représentation MVC request

Un accès à la BDD est effectué, et le résultat est renvoyé brut à la View correspondante à la requête client. Enfin, la View s’occupe de mettre en forme les informations récupérées dans la BDD, et de nous faire une jolie présentation.

Représentation MVC request

Si le client clique maintenant sur un lien « voir le tout premier article publié », le Controller appellera alors la méthode « récupérer le plus ancien article », méthode contenue dans le Model. Encore une fois, le Model interroge la BDD, et le résultat sera affiché par la View. Cette View sera la réponse de la requête. Tout ce qui se passe derrière les rideaux sera transparent pour l’utilisateur.

Pourquoi utiliser le MVC ?

Il y a de nombreuses raisons, autre que la volonté de structurer son application. Par exemple, au sein d’une équipe de développeurs, chacun peut avoir une tâche précise : les web designers s’occupent uniquement de l’affichage des pages, en implémentant simplement quelques boucles PHP. Les web développeurs s’occupent de la couche métier et l’accès à la BDD.

Autre exemple encore plus simple : vous changez une information concernant la connexion à la base de données. Si vous n’avez pas utilisé ce modèle de conception, vous devrez chercher dans chacune de vos pages si une connexion est créée, et modifier les informations. Plutôt fastidieux… Grâce au MVC, il suffit d’aller chercher le Model, et de modifier la ligne concernée.

De plus, le code étant mieux organisé, l’application sera beaucoup plus maintenable.

Comments are closed.