Symfony : – Modèle de conception MVC

L’acronyme MVC (en anglais : Model View Controller) est un terme très répandu dans l’univers du développement logiciel. Il qualifie un modèle de conception (Design-Pattern en anglais), dont l’objectif est d’identifier précisément les responsabilités des différents composants d’une application afin d’augmenter sa maintenabilité et son évolutivité.

Ce modèle, d’abord implémenté dans les années 1980 dans le langage SmallTalk, affecte des tâches précises à trois catégories de composants :

  • Le modèle : Gère les données et les traitements métier de l’application.
  • La vue : Prend en charge l’affichage des informations à destination de l’utilisateur final.
  • Le contrôleur : Fait le lien entre l’utilisateur, les données et la vue.

Ce modèle a été repris dans les années 1990 par la plateforme Java Enterprise Edition pour le développement web, puis adopté par des frameworks PHP tels que Symfony.

a. La vue

La vue représente la partie présentation de l’application. Elle désigne souvent des templates, qui sont des gabarits permettant de présenter des informations aux utilisateurs via une interface.

Dans une application web, un template contient principalement du HTML pour la mise en page, et du code (PHP ou autre) pour intégrer les données dynamiques issues du modèle.

b. Le modèle

Le modèle englobe les fonctionnalités de l’application. Il inclut les « classes métier » (Utilisateur, Produit, Commande, etc.) ainsi que celles chargées de leur manipulation et de leur lien avec la base de données.

Chaque classe du modèle a une responsabilité clairement délimitée pour assurer une meilleure organisation du code.

c. Le contrôleur

Le contrôleur est l’intermédiaire entre l’utilisateur et les couches Modèle et Vue. Il est composé d’une multitude d’actions, chaque action correspondant à une requête.

Le contrôleur contient uniquement de la logique d’application, tandis que les traitements sont délégués au modèle.

2. En pratique

La compatibilité avec le modèle MVC varie selon les frameworks. Certains l’affichent en page d’accueil, tandis que d’autres l’évoquent peu. Cependant, la plupart respectent ce modèle abstrait.

Prenons un exemple pour comprendre son fonctionnement au travers d’une requête HTTP :

GET /articles/introduction.html

a. Le contrôleur frontal

Le contrôleur frontal est le point d’entrée unique de l’application. Il amorce (« bootstrap ») l’application en interceptant les requêtes entrantes grâce à des modules de réécriture d’URL.

b. Le routage

Une fois l’application démarrée, le routage décide de l’action à exécuter pour traiter la requête. Dans cet exemple, il s’agit de l’action voir du contrôleur Article.

c. Le contrôleur et le modèle

Voici un exemple de contrôleur en PHP :

<?php

class ArticleControleur
{
    public $modele;
    public $vue;

    public function voir($titre)
    {
        $article = $this->modele->chercherArticle($titre);
        $this->vue->afficher(['article' => $article]);
    }
}

Le contrôleur demande au modèle de rechercher l’article, puis le transmet à la vue pour affichage.

d. La vue

Enfin, la vue gère l’affichage des données dans une page HTML :

<!DOCTYPE html>
<html>
    <body>
        <h1><?php echo $article->getTitre(); ?></h1>
        <p><?php echo $article->getContenu(); ?></p>
    </body>
</html>

Le modèle MVC est un standard essentiel dans le développement d’applications web modernes. Les frameworks PHP comme Symfony, Zend Framework et Laravel l’utilisent largement, bien que la syntaxe puisse différer.

Sites Ressources e-Plus Pour Laravel 11

1. Packagist Description : Le principal dépôt de packages PHP, avec une catégorie spécifique pour Laravel. Lien : https://packagist.org Ressources :...