Structurer ses applications avec le pattern MVC
Structurer ses applications avec le pattern MVC
-
Objectif
- Vous apprendrez à :
- Comprendre le pattern MVC (Modèle – Vue – Contrôleur) appliqué à PHP.
- Organiser correctement un projet PHP en architecture MVC.
- Configurer une connexion sécurisée à une base de données MySQL avec PDO.
- Séparer la logique métier, l’accès aux données et l’affichage.
- Créer un contrôleur capable de récupérer des données depuis un modèle.
- Afficher les données dans une vue sans écrire de SQL.
- Comprendre le trajet d’une requête HTTP dans une application MVC.
-
Présentation
-
Le pattern MVC (Model – View – Controller) est une architecture de développement
utilisée pour structurer proprement une application web. - En PHP, MVC permet de séparer clairement les responsabilités :
- Le Modèle s’occupe des données et de la base de données.
- La Vue se charge uniquement de l’affichage HTML.
- Le Contrôleur fait le lien entre le modèle et la vue.
-
💡 Objectif principal du MVC : rendre le code plus lisible,
plus maintenable et plus facile à faire évoluer. -
Dans ce tutoriel, nous allons créer une mini-application PHP MVC
sans framework, en utilisant :
PHP, PDO et MySQL. -
Le concept MVC (Model – View – Controller)
- Modèle (Model)
- Gère la connexion à la base de données.
- Contient les requêtes SQL (SELECT, INSERT, UPDATE, DELETE).
- Ne contient aucun code HTML.
- Vue (View)
- Contient le HTML et l’affichage des données.
- Affiche les informations transmises par le contrôleur.
- Ne contient aucune requête SQL.
- Contrôleur (Controller)
- Reçoit la requête de l’utilisateur.
- Appelle les méthodes du modèle.
- Transmet les données à la vue.
-
✅ Règle d’or :
Le contrôleur décide, le modèle travaille, la vue affiche. -
Architecture du projet MVC
-
Le projet est organisé selon une architecture MVC claire et sécurisée,
avec un point d’entrée unique (index.php). -
Rôle de chaque dossier
- public/
- Seul dossier accessible depuis le navigateur.
- Contient le fichier
index.php. - Démarre l’application MVC.
- app/models/
- Contient les classes représentant les données.
- Utilise PDO pour communiquer avec MySQL.
- Exemple :
User.php. - app/controllers/
- Contient la logique de traitement.
- Appelle les modèles.
- Charge les vues.
- app/views/
- Contient les fichiers HTML/PHP.
- Affiche les données reçues.
- config/
- Contient les paramètres de la base de données.
- routes/
- Déclare les URLs disponibles dans l’application.
-
Flux d’exécution d’une requête
- L’utilisateur tape une URL dans le navigateur (ex :
/users). - Le serveur redirige vers
public/index.php. - Le routeur analyse l’URL demandée.
- Le contrôleur correspondant est appelé.
- Le contrôleur appelle le modèle pour récupérer les données.
- Les données sont envoyées à la vue.
- La vue affiche le résultat HTML.
-
✅ Important :
À aucun moment la vue n’accède directement à la base de données.
.
├── app/
│ ├── controllers/ ← 🧠 Contrôleurs
│ ├── models/ ← 📦 Modèles
│ └── views/ ← 🖥️ Vues
│
├── config/ ← ⚙️ Configuration (BDD)
│ └── database.php
│
├── core/ ← 🔩 Classes principales du MVC
│ ├── Controller.php
│ ├── Model.php
│ └── Router.php
│
├── public/ ← 🌍 Dossier public
│ └── index.php ← Point d’entrée de l’application
│
├── routes/
│ └── web.php ← Définition des routes
│
├── .htaccess ← Redirection vers public/index.php
└── README.md
