Chapitre 27 : Architecture MVC

Structurez vos projets PHP avec l'architecture Modèle-Vue-Contrôleur (MVC)

1. Qu'est-ce que l'architecture MVC ?

MVC est un modèle d'organisation du code qui permet de séparer les responsabilités dans une application :

  • Modèle (Model) : Gère les données et la logique métier
  • Vue (View) : Gère l'affichage
  • Contrôleur (Controller) : Fait le lien entre modèle et vue

2. Structure de dossiers recommandée

Voici comment organiser votre projet en suivant le pattern MVC :

/mon-projet
├── index.php
├── controllers/
│   └── ArticleController.php
├── models/
│   └── Article.php
├── views/
│   └── articleView.php
└── config/
    └── database.php

3. Exemple de modèle (Model)

Le modèle gère l'accès aux données et la logique métier :

<?php
// models/Article.php
class Article {
  public function getAll() {
    $pdo = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
    return $pdo->query("SELECT * FROM articles")->fetchAll();
  }
}
?>

4. Exemple de contrôleur (Controller)

Le contrôleur orchestre le flux entre modèle et vue :

<?php
// controllers/ArticleController.php
require_once '../models/Article.php';

class ArticleController {
  public function index() {
    $articleModel = new Article();
    $articles = $articleModel->getAll();
    include '../views/articleView.php';
  }
}
?>

5. Exemple de vue (View)

La vue se concentre uniquement sur la présentation des données :

<!-- views/articleView.php -->
<h2>Liste des articles</h2>
<ul>
  <?php foreach ($articles as $article): ?>
    <li><?= htmlspecialchars($article['titre']) ?></li>
  <?php endforeach; ?>
</ul>

6. Point d'entrée : index.php

Le fichier index.php initialise l'application et appelle le contrôleur approprié :

<?php
require_once 'controllers/ArticleController.php';

$controller = new ArticleController();
$controller->index();
?>

7. Avantages du MVC

  • Séparation claire des responsabilités
  • Code plus maintenable et testable
  • Facilite le travail en équipe (développeurs / designers)
  • Meilleure réutilisabilité des composants
  • Évolution plus facile de l'application

8. Exercice pratique : Créez une application MVC de blog

🎯 Objectif : Mettre en œuvre l'architecture MVC pour afficher une liste d'articles depuis une base de données.

Consignes :

  • Créez une base de données blog avec une table articles (id, titre, contenu)
  • Créez un modèle Article pour récupérer les articles
  • Créez un contrôleur ArticleController pour orchestrer l'affichage
  • Créez une vue articleView.php pour afficher les articles
  • Faites pointer votre fichier index.php vers le contrôleur

Bonus :

  • Affichez un seul article à la fois avec un paramètre d'URL (?id=2)
  • Ajoutez un modèle Commentaire avec affichage des commentaires liés
  • Créez un système de routage basique

✅ Cet exercice vous préparera à créer des applications PHP bien organisées à grande échelle.

9. Résumé

  • ✅ Compréhension de la structure MVC
  • ✅ Capacité à organiser son code PHP de manière modulaire
  • ✅ Préparation à des projets plus complexes
  • ✅ Meilleures pratiques pour le développement d'applications web

L'architecture MVC est une pierre angulaire dans la structuration de vos futures applications PHP.