Session BRE04 Help

Cours : MVC, Routing et Controllers

Les notions du jour
  • Présentation du MVC

  • Controllers

  • Views

  • Router

Qu'est-ce que le MVC ?

Le MVC (Model View Controller) est un design pattern, une architecture de code particulièrement adaptée au web.

Le MVC repose sur la stricte séparation entre les pages (View), les données (Models) et la logique (Controller).

Utilisé avec la POO, le MVC permet un code propre bien organisé, souple et plus facile à maintenir et faire évoluer.

Les règles d'or du MVC

La séparation des pouvoirs

Pour implémenter le MVC vous devez rigoureusement séparer :

  • Les Views : pas de code HTML / CSS / appel à JS en dehors d'un template

  • La logique : pas de logique en dehors d'un Controller

  • Les Données : vos données sont représentées par des Models et interrogées par des Managers

Le Routing

Une route (une URL) === Une méthode de Controller

Déroulement de l'appel à une page en MVC

Le fonctionnement typique de l'appel d'une page en MVC est donc le suivant :

  1. Votre utilisateur demande à son navigateur la page de votre site : http://example.com/index.php?route=login

  2. Votre index.phpreçoit la requête et instancie votre class Router

  3. Votre index.php transmet la requête à votre Router

  4. Le Router vérifie si la route login existe, et instancie le controlleur approprié (LoginController)

  5. Le Router appelle la méthode appropriée du controlleur : LoginController::login()

  6. La méthode login prépare le nom du template à charger et appelle layout.phtml

  7. layout.phtml appelle le template login.phtml

  8. Votre utilisateur voit sa page s'afficher

Les Controllers

Vos Controllers contiennent toute la logique de votre site.

En MVC, une route = une méthode de Controller.

Un Controller va généralement correspondre à une fonctionnalité.

Par exemple :

  • ?route=login et ?route=register correspondront aux méthodes AuthController::login() et AuthController::register() respectivement.

  • ?route=list-users et ?route=show-user aux méthodes UserController::list() et UserController::show() respectivement.

  • ...

Une méthode de Controller prépare les données pour l'affichage (en appelant un Manager par exemple), précise au layout le template qui devra être appelé et traite les formulaires quand ils ont été soumis.

Le Routeur

Le Router est une classe donc le rôle est de faire correspondre les routes dans les URLs (?route=bidule) à la bonne méthode de Controller.

Si aucune méthode ne correspond, la route n'existe pas et il doit appeler une méthode de Controller qui affichera une page 404.

Exercice Routeur MVC


24 June 2025