MVC¶
Concept d’architecture¶
L’architecture MVC est découpé en 3 zones :
M pour Modèle qui contient les données à afficher.
V pour Vue qui contient la présentation des éléments à afficher (interface graphique notamment).
C pour Contrôleur qui contient la logique des actions effectuées par l’utilisateur. Chaque Vue est associée à un Contrôleur.
Principe du MVC
Source : Openclassroom MVC¶
Le client demande une page depuis son navigateur. L’architecture du site est faite en MVC (Modèle-vue-contrôleur). De ce fait, le client en cliquant sur une page va appeler sans le savoir le contrôleur de la page. Ce dernier va interagir avec le modèle pour récupérer les données nécessaires à la page demandée. Le travail du modèle est d’obtenir les informations, souvent dans une base de données (par exemple: MySQL). Une fois, les données obtenues, il les renvoie au contrôleur. Les données sont maintenant en possession du contrôleur. Il va pouvoir les traiter au besoin et surtout les envoyer à la vue. Cette dernière se charge de la mise en forme des données sur la page.
Explication d’un modèle MVC basique¶
Téléchargement de l'application
Le PHP tourne sur des serveurs de type Linux. Il est possible de coder sur toutes les plateformes actuelles (Windows, Linux et Mac) en utilisant un serveur Web local. Pour Windows, le serveur utilisé sera uWamp: uWamp.
Quelle que soit la page que l’on souhaite accéder, tout est dirigé par la page « index.php » se trouvant à la racine. Elle instancie un nouvel objet qui va permettre à son tour d’instancier le bon contrôleur et l’action pour l’affichage de la page.
Le contrôleur a pour but de chercher les données et de les transmettre à la vue, en utilisant la bonne action. Le modèle va chercher les données dans les fichiers fournis et la vue va afficher les données.
Dans les méthodes « display » et « listAction » de « CustomerController », certains commentaires ont été ajoutés afin d’expliquer le code.
Arborescence
Le fichier « index.php »
Dans cette architecture, tout démarre depuis la page « index.php ». L’URL sera toujours composée d’un contrôleur et d’une action. Par exemple, la page « liste des clients » est demandée. L’URL sera : http://adresseDuSite/index.php?controller=customer&action=list
Déroulement :
Au moment où l’utilisateur saisit cette URL, la page « index.php » est appelée. Un objet de type « MainController » est instancié et la méthode « dispatch » est appelée. Cette dernière permet de récupérer le contrôleur (dans l’URL) et l’action (dans l’URL). Elle appelle la méthode « menuSelected » qui va instancier le contrôleur en rapport avec celui demandé dans l’URL, puis pour finir va construire la vue qui sera affichée. Dans la méthode « viewBuild » le contrôleur instancié va appeler la bonne action grâce à la méthode « display ».
Le dossier « controller »
Il contient un contrôleur principal et tous les contrôleurs pour appeler les actions spécifiques. Ces derniers héritent du contrôleur principal. Chaque contrôleur sert à atteindre la bonne action permettant de construire la page que l’utilisateur aura appelé.
Le dossier « model »
Il contient un fichier « Entity.php », ce dernier est l’interface qui désigne la ou les méthodes qui seront obligatoirement définies. Il a également des fichiers « Repository » par contrôleur qui implémente l’interface. Chaque repository contiendra autant de méthodes que nécessaire pour accéder aux données. Par exemple, la méthode « findAll() » permet de récupérer toutes les données et la méthode « findOne($id) » permet de repérer les informations pour un élément spécifique.
Le dossier « view »
A la racine de ce dossier se trouvent les fichiers généraux pour construire la page, à savoir head.php, header.php, footer.php et menu.php. Dans le dossier « page », il y aura un dossier par contrôleur et ensuite, une page par action. Exemple : si la page pour lister tous les clients est demandée, ce sera la view : /view/page/customer/list.php qui sera appelée.
Le dossier « data »
Ce dossier sert à gérer les données de l’application. A terme, il sera remplacé par une autre gestion des données, telles qu’une base de données MySQL ou équivalent. Il y a deux fichiers. Le premier qui contient la liste des clients et le second, la liste des factures.
Le dossier « resources »
C’est le dossier qui permet de stocker tout ce qui concerne le CSS, les polices particulières, les images du design du site et le JavaScript.
Explication d’un framework MVC existant¶
<?php
// Faire un Hello World ! en PHP
echo "Hello World !";
print "Hello World !";
?>

