Categories
Apprentissage Formation MVC PHP Web

L’organisation MVC

Le MVC (Model View Controller) est une manière d’organiser son code, de structurer son projet selon un ensemble de conventions.

Fonctionnement

L’idée est de pouvoir séparer le code en différents fichiers dont chacun aura une responsabilité définie. Cela permettra alors de rendre le code plus lisible, plus maintenable et plus prévisible.

schema de mvc (model view controller)
Schéma du Model-View-Controller

Ces différents fichiers sont :

  • les models, qui sont les fichiers qui gèrent la base de données. C’est une classe qui contient des setters, getters, et des fonctions d’enregistrement ou de lecture de la base de données.
    Le fichier est nommé en PascalCase et au singulier, la classe associée prendra alors exactement le même nom.
    Exemple de nommage : Exemple.php qui contiendra : class Exemple { /* */}
  • des views, qui sont les seuls fichiers contenant de l’affichage (HTML) et du code dynamique structurel (des conditions ou des boucles pour l’affichage).
    Le dossier est nommé en kebab-case et au pluriel, il y a alors un fichier par vue.
  • les controllers (glue entre le model et la view) qui, selon la page demandée, récupéreront les données (en demandant au Model correspondant) et afficheront les données (en demandant à la View correspondante).
    Le fichier est nommé en PascalCase et au pluriel, la classe associée prendra alors exactement le même nom.
    Exemple de nommage : ExemplesController.php qui contiendra : class ExemplesController { /* */}

En plus de ces éléments, il y a aussi:

  • un router. C’est un bloc de code (codé manuellement ou grâce à une librairie externe) qui se chargera d’appeler le bon controller selon la page demandée.

Par exemple :

Page demandéeControllerMéthodeCommentaires
"/" en GETAppControllerindex()Relative à l’application en général (AppController). Pour laquelle on veut l’index de l’application
"/a-propos" en GETAppControllerabout()Les pages relatives à l’application en général (AppController), et pour laquelle on veut la page à propos de l’application
"/articles" en GETArticlesControllerindex()Relatives aux articles (ArticlesController), et pour laquelle on veut l’index des articles
"/articles/3" en GETArticlesControllershow(3)Les pages relatives aux articles (ArticlesController), pour laquelle on veut l’affichage d’un article (l’article id = 3)

Comment créer un modèle MVC ?

Il existe de nombreux tutos sur internet. Je vous en ai donc sélectionné quelques-uns :
Tomsihap
Grafikart
Nouvelle Techno
– Kevin Martinel : cours 1 et cours 2

Pourquoi utiliser le MVC

Connaitre l’architecture MVC permet de comprendre le fonctionnement des framework PHP.
En effet, ces derniers sont tous basés sur la logique MVC, ce qui permet une maintenabilité du code plus performante.

Dans un projet en MVC, tout est séparé.
Les URL sont déclarées (par exemple : une route en GET pour voir les formulaires, une route en POST pour le traiter).
Chaque table de la base de données à son propre controller (qui définira via des fonctions les données à transmettre à l’URL pour l’afficher ensuite) ainsi que son propre Model (qui permet de traiter et récupérer les données de la base de données).
Enfin, les vues sont gérées par table de la base de données, et par type d’affichage. Ce sont donc des morceaux de fichiers appelés par le controller au moment de l’affichage.

CRUD

Et si on abordait le sujet du CRUD ? Bonne idée, mais qu’est ce que c’est ? CRUD est l’acronyme de Create, Read, Update et Delete.

Le CRUD permet de faire facilement le lien entre la base de données et PHP. En effet, chaque action visant la base de données est gérée via PHP. On a alors différents fichiers :
– un dédié à la création des éléments de la base de données
– un permettant la lecture (et l’affichage) des éléments de la base de données
– un dédié à la mise à jour de ces éléments
– et enfin, un permettant la suppression d’un (ou plusieurs) élément(s) de la base de données.

Le CRUD s’inscrit donc logiquement dans le fonctionnement en MCV : il permet de bien tout séparer !


Avoir vu le MVC permet de bien compartimenter la façon de fonctionner pour gérer un site en PHP.
L’utilisation d’un framework va permettre d’aller encore plus loin, tout en rendant la création d’un site plus rapide ! C’est ce que nous allons voir par la suite…