Le cycle de vie d’une requête HTTP
Lorsque vous visitez une page web créée avec Symfony, une série d’étapes invisibles se déroulent en arrière-plan qu'il est bon de bien comprendre.
Vue d'ensemble du cycle
Le cycle de vie d’une requête Symfony peut être résumé grâce au schéma ci-dessous.
Nous y voyons plusieurs étapes.
Étapes du cycle de vie
Étape 1 — L’utilisateur envoie une requête
Tout commence lorsqu’un utilisateur saisit une URL dans son navigateur, par exemple :
https://localhost:8000/home
Le navigateur (client) envoie alors une requête HTTP vers le serveur.
Étape 2 et 3 — Le serveur reçoit la requête
Le serveur web (Apache, Nginx ou le serveur interne de Symfony) reçoit cette requête et la redirige vers le fichier d’entrée unique :
public/index.php
Ce fichier est le Front Controller : c’est le point de départ de toutes les requêtes Symfony. Il initialise le framework et transmet la requête au noyau de Symfony (Kernel).
Étape 4 - Le Kernel (noyau) prend le relais
Dans Symfony, le Kernel (le noyau de l’application) est la classe centrale qui orchestre toute la logique du framework.
C’est lui qui reçoit la requête, charge la configuration, et déclenche les différents composants (routeur, contrôleurs, événements, etc.).
Voir le contenu dans /public/index.php.
<?php
use App\Kernel;
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
};
Ensuite passage de la requête au routeur.
Étape 5 — Le routeur identifie la route
Symfony compare l’URL demandée (c'est à dire /home) à toutes les routes définies (nous verrons comment les définir plus tard).
Lorsqu’il trouve une correspondance, il détermine quel contrôleur doit être appelé.
Étape 6 — Le contrôleur est exécuté
Une fois la route trouvée, Symfony exécute le contrôleur correspondant.
Il récupère les données nécessaires, effectue la logique et prépare les informations pour les envoyer à la vue.
Étape 7 — Génération de la vue
ne fois les données prêtes, le contrôleur les transmet à la vue (un fichier Twig).
Étape 8 — Création de la réponse
La vue générée est encapsulée dans un objet Response, qui contient : - le contenu HTML
- le code de statut HTTP (200, 404, 500…)
- les en-têtes (headers)
Étape 9 - Retour au navigateur
Le serveur web renvoie la réponse au navigateur, qui affiche la page à l’utilisateur.
Et voilà !
Si vous ne maîtrisez pas le concept de namespace en PHP, je vous recommande vivement de consulter la prochaine leçon dédiée aux namespaces. Cette leçon est facultative ; si vous êtes déjà familier avec le sujet, vous pouvez passer directement à la suivante : créer notre premier contrôleur.
