Section courante

A propos

Section administrative du site

Cycle de vie de la requête

Lorsqu'on utilise un outil dans la vie courante, on se sent plus à l'aise lorsqu'on comprend son fonctionnement. Le développement d'applications ne fait pas exception. Comprendre le fonctionnement de vos outils de développement vous permet de les utiliser avec plus d'aisance et de confiance.

Cette page a pour but de vous donner une vue d'ensemble claire et concise du fonctionnement du cadre d'application Laravel. En apprenant à mieux connaître ce cadre d'application, son utilisation vous semblera plus intuitive et vous gagnerez en confiance lors du développement de vos applications.

Aperçu du cycle de vie

Premiers pas

Le point d'entrée de toutes les requêtes adressées à une application Laravel est le fichier `public/index.php`. Toutes les requêtes sont dirigées vers ce fichier par la configuration de votre serveur Web (Apache/Nginx). Le fichier `index.php` ne contient que peu de code. Il sert principalement de point de départ pour le chargement du reste du cadre d'application.

Le fichier `index.php` charge la définition de l'autoloader générée par Composer, puis récupère une instance de l'application Laravel depuis `bootstrap/app.php`. La première action effectuée par Laravel est de créer une instance du conteneur de l'application/du service.

Noyaux HTTP et console

Ensuite, la requête entrante est envoyée soit au noyau HTTP, soit au noyau console, via les méthodes `handleRequest` ou `handleCommand` de l'instance de l'application, selon le type de requête. Ces deux noyaux constituent le point central par lequel transitent toutes les requêtes. Pour l'instant, concentrons-nous sur le noyau HTTP, étant une instance de `Illuminate\Foundation\Http\Kernel`.

Le noyau HTTP définit un ensemble de fonctions d'amorçage étant exécutées avant le traitement de la requête. Ces fonctions configurent la gestion des erreurs et la journalisation, détectent l'environnement de l'application et effectuent d'autres tâches nécessaires avant le traitement effectif de la requête. Généralement, ces classes gèrent la configuration interne de Laravel dont vous n'avez pas à vous soucier.

Le noyau HTTP est également responsable du passage de la requête à travers la pile de middleware de l'application. Ces middleware gèrent la lecture et l'écriture de la session HTTP, déterminent si l'application est en mode maintenance, vérifient le jeton CSRF,... Nous y reviendrons plus en détail prochainement.

La signature de la méthode `handle` du noyau HTTP est assez simple : elle reçoit une requête et renvoie une réponse. Imaginez le noyau comme une grande boîte noire représentant l'intégralité de votre application. Envoyez-lui des requêtes HTTP et il vous renverra des réponses HTTP.

Fournisseurs de services

L'une des actions les plus importantes lors de l'initialisation du noyau consiste à charger les fournisseurs de services de votre application. Ces fournisseurs sont responsables de l'initialisation de tous les composantes du cadre d'application, tels que la base de données, la file d'attente, la validation et le routage.

Laravel parcourt la liste des fournisseurs et les instancie un par un. Une fois l'instanciation terminée, la méthode `register` est appelée pour chaque fournisseur. Ensuite, une fois tous les fournisseurs enregistrés, la méthode `boot` est appelée pour chacun d'eux. Ainsi, les fournisseurs de services peuvent dépendre de l'enregistrement et de la disponibilité de chaque liaison de conteneur au moment de l'exécution de leur méthode `boot`.

En résumé, la quasi-totalité des fonctionnalités majeures de Laravel est initialisée et configurée par un fournisseur de services. De ce fait, les fournisseurs de services constituent l'aspect le plus important du processus d'initialisation de Laravel.

Bien que le cadre d'application utilise en interne des dizaines de fournisseurs de services, vous avez également la possibilité de créer les vôtres. Vous trouverez la liste des fournisseurs de services définis par l'utilisateur ou tiers utilisés par votre application dans le fichier bootstrap/providers.php.

Routage

Une fois l'application initialisée et tous les fournisseurs de services enregistrés, la requête est transmise au routeur pour traitement. Le routeur achemine la requête vers une route ou un contrôleur, et exécute les middlewares spécifiques à cette route.

Les middlewares offrent un mécanisme pratique pour filtrer ou examiner les requêtes HTTP entrantes. Par exemple, Laravel inclut un middleware vérifiant l'authentification de l'utilisateur. Si l'utilisateur n'est pas authentifié, le middleware le redirige vers la page de connexion. En revanche, s'il est authentifié, le middleware autorise la requête à poursuivre son exécution dans l'application. Certains middlewares sont appliqués à toutes les routes de l'application, comme PreventRequestsDuringMaintenance, tandis que d'autres ne sont appliqués qu'à des routes ou groupes de routes spécifiques.

Si la requête traverse tous les intergiciels assignés à la route correspondante, la méthode de la route ou du contrôleur sera exécutée et la réponse renvoyée par la méthode de la route ou du contrôleur sera renvoyée à travers la chaîne d'intergiciels de la route.

Conclusion

Une fois que la route ou la méthode du contrôleur a renvoyé une réponse, celle-ci est transmise à l'extérieur via le middleware de la route, permettant ainsi à l'application de la modifier ou de l'examiner.

Enfin, une fois la réponse transmise via le middleware, la méthode `handle` du noyau HTTP renvoie l'objet réponse à la méthode `handleRequest` de l'instance de l'application. Cette dernière appelle ensuite la méthode `send` sur la réponse reçue, qui envoie le contenu de la réponse au navigateur web de l'utilisateur. Nous avons ainsi parcouru l'intégralité du cycle de vie d'une requête Laravel !

Concentrez-vous sur les fournisseurs de services

Les fournisseurs de services sont essentiels au démarrage d'une application Laravel. L'instance de l'application est créée, les fournisseurs de services sont enregistrés, et la requête est transmise à l'application initialisée. C'est aussi simple que cela !

Il est très important de bien comprendre comment une application Laravel est construite et initialisée via les fournisseurs de services. Les fournisseurs de services personnalisés de votre application sont entreposés dans le répertoire `app/Providers`.

Par défaut, le fournisseur `AppServiceProvider` est quasiment vide. C'est l'endroit idéal pour ajouter l'initialisation et les liaisons de conteneur de services propres à votre application. Pour les applications importantes, vous pouvez créer plusieurs fournisseurs de services, chacun avec une initialisation plus granulaire pour les services spécifiques utilisés par votre application.



Dernière mise à jour : Lundi, le 16 février 2026