1. Utiliser l'architecture MVC dans les applications web/php
Le PDF du document est disponible |ICI|.
Les codes du document sont disponibles |ICI|.
Le modèle MVC (Modèle-Vue-Contrôleur) cherche à séparer nettement les couches présentation, traitement et accès aux données. Une application web respectant ce modèle sera architecturée de la façon suivante :
![]() |
Une telle architecture est souvent appelée architecture 3-tiers ou à 3 niveaux :
- l'interface utilisateur est la vue (V)
- la logique applicative est le contrôleur (C)
- les sources de données sont le modèle (M)
L'interface utilisateur est souvent un navigateur web mais cela pourrait être également une application autonome qui via le réseau enverrait des requêtes HTTP au service web et mettrait en forme les résultats que celui-ci lui envoie. La logique applicative est constituée des scripts traitant les demandes de l'utilisateur. La source de données est souvent une base de données mais cela peut être aussi de simples fichiers plats, un annuaire LDAP, un service web distant,... Le développeur a intérêt à maintenir une grande indépendance entre ces trois entités afin que si l'une d'elles change, les deux autres n'aient pas à changer ou peu.
L'architecture MVC est bien adaptée à des applications web écrites avec des langages orientés objet. Le langage PHP (4.x) n'est pas orienté objet. On peut néanmoins faire un effort de structuration du code et de l'architecture de l'application afin de se rapprocher du modèle MVC :
- On mettra la logique métier de l'application dans des modules séparés des modules chargés de contrôler le dialogue demande-réponse. L'architecture MVC devient la suivante :
![]() |
Dans le bloc [Logique Applicative], on pourra distinguer :
- le programme principal ou contrôleur, qui est la porte d'entrée de l'application.
- le bloc [Actions], ensemble de scripts chargés d'exécuter les actions demandées par l'utilisateur.
- le bloc [Classes métier] qui regroupe les modules php nécessaires à la logique de l'application. Ils sont indépendants du client. Par exemple, la fonction permettant de calculer un impôt à partir de certaines informations qui lui sont fournies en paramètres, n'a pas à se soucier de la façon dont ont été acquis ceux-ci.
- le bloc [Classes d'accès aux données] qui regroupe les modules php qui obtiennent les données nécessaires au contrôleur, souvent des données persistantes (BD, fichiers, ...)
- les générateurs des vues envoyées comme réponse au client.
Dans les cas les plus simples, la logique applicative est souvent réduite à deux modules :
- le module [contrôle] assurant le dialogue client-serveur : traitement de la requête, génération des diverses réponses
- le module [métier] qui reçoit du module [contrôle] des données à traiter et lui fournit en retour des résultats. Ce module [métier] gère alors lui-même l'accès aux données persistantes.

