Cycle de demande
- Introduction
- Lorsque vous utilisez un outil dans la « vie quotidienne », si vous comprendre le principe de fonctionnement de l'outil. Il sera alors plus pratique à utiliser. Il en va de même pour le développement d’applications. Lorsque vous comprenez vraiment le principe de mise en œuvre d’une fonction, il sera plus facile et plus pratique de l’utiliser. Le but de ce document est de vous permettre de mieux comprendre le fonctionnement du framework Laravel. Obtenez une vision holistique à travers le cadre afin que tout ne semble plus « magique ». Croyez-moi, cela vous aidera à devenir plus conscient de ce que vous faites et plus confiant quant à ce que vous voulez faire. Même si vous ne comprenez pas toute la terminologie, ne perdez pas confiance ! Essayez-le un peu, apprenez à l'utiliser et vos connaissances grandiront sûrement au fur et à mesure que vous progresserez dans d'autres parties de la documentation.
Tout d'abord
Toutes les entrées de requête pour les applications Laravel sont des fichiers public/index.php
. Toutes les requêtes sont dirigées vers ce fichier via votre serveur Web (Apache/Nginx) via la configuration. Le fichier index.php
ne contient pas beaucoup de code, mais c'est le point de départ pour charger le reste du framework. public/index.php
文件。而所有的请求都是经由你的 Web 服务器(Apache/Nginx)通过配置引导到这个文件。 index.php
文件代码并不多,但是,这里是加载框架其它部分的起点。
index.php
文件加载 Composer 生成的自动加载设置,然后从 bootstrap/app.php
脚本中检索 Laravel 应用程序的实例。 Laravel 本身采取的第一个动作是创建一个应用程序 / 服务容器。
HTTP / Console 内核
接下来, 根据进入应用程序的请求类型来将传入的请求发送到 HTTP 内核或控制台内核。而这两个内核是用来作为所有请求都要通过的中心位置。 现在,我们先看看位于 app/Http/Kernel.php
中的 HTTP 内核。
HTTP 内核继承了 IlluminateFoundationHttpKernel
类,该类定义了一个 bootstrappers
数组。 这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理, 日志, 检测应用环境,以及其它在请求被处理前需要执行的任务。
HTTP 内核还定义了所有请求被应用程序处理之前必须经过的 HTTP 中间件 ,这些中间件处理 HTTP 会话 读写、判断应用是否处于维护模式、 验证 CSRF 令牌 等等。
HTTP 内核的 handle
方法签名相当简单:获取一个 Request
,返回一个 Response
。可以把该内核想象作一个代表整个应用的大黑盒子,输入 HTTP 请求,返回 HTTP 响应。
服务提供者
内核启动操作中最重要的便是你应用的 服务提供者 了。所有应用下的服务提供者均配置到了 config/app.php
配置文件中的 providers
数组中。 第一步,所有服务提供者的 register
方法会被调用,然后一旦所有服务提供者均注册后, boot
方法才被调用。
服务提供者给予框架开启多种多样的组件,像数据库,队列,验证器,以及路由组件。只要被启动服务提供者就可支配框架的所有功能,所以服务提供者也是 Laravel 整个引导周期最重要组成部分。
请求调度
一旦启动且所有服务提供者被注册,Request
index.php
charge les paramètres de chargement automatique générés par Composer puis récupère l'instance de l'application Laravel à partir du script bootstrap/app.php
. La première action entreprise par Laravel lui-même est de créer un conteneur d'application/service. app/Http/Kernel.php
. IlluminateFoundationHttpKernel
, qui définit un tableau de bootstrappers
. Les classes de ce tableau sont exécutées avant l'exécution de la requête. Ces bootstrappers configurent la gestion des erreurs, la journalisation, la vérification de l'environnement de l'application et d'autres tâches qui doivent être effectuées avant le traitement de la requête. 🎜🎜Le noyau HTTP définit également un middleware HTTP par lequel toutes les requêtes doivent passer avant d'être traitées par l'application. Ces middleware gèrent la lecture et l'écriture des sessions HTTP, déterminent si l'application est en mode maintenance, vérifient les jetons CSRF, etc. 🎜🎜La signature de la méthode handle
du noyau HTTP est assez simple : obtenez une Requête
et renvoyez une Réponse
. Considérez ce noyau comme une grande boîte noire qui représente l'ensemble de l'application, recevant les requêtes HTTP et renvoyant les réponses HTTP. 🎜Fournisseur de services
🎜La chose la plus importante dans l'opération de démarrage du noyau est le fournisseur de services de votre application. Les fournisseurs de services sous toutes les applications sont configurés dans le tableauproviders
du fichier de configuration config/app.php
. Dans la première étape, la méthode register
de tous les fournisseurs de services est appelée, puis une fois que tous les fournisseurs de services sont enregistrés, la méthode boot
est appelée. 🎜🎜Les fournisseurs de services permettent au framework d'activer une variété de composants, tels que des bases de données, des files d'attente, des validateurs et des composants de routage. Tant que le fournisseur de services est démarré, il peut contrôler toutes les fonctions du framework, de sorte que le fournisseur de services est également la partie la plus importante de l'ensemble du cycle de démarrage de Laravel. 🎜Planification des demandes
🎜Une fois démarrée et tous les fournisseurs de services enregistrés, laRequête
sera envoyée au routeur . Le routeur enverra la requête à la route ou au contrôleur lié, et bien sûr au middleware lié à la route. 🎜🎜🎜🎜🎜🎜🎜Focus sur les prestataires de services
Les prestataires de services sont la clé du véritable cycle de vie de Laravel. Une fois l'instance d'application créée, le fournisseur de services est enregistré puis demandé à être pris en charge par l'application lancée. Restez simple !
Avoir une solide compréhension de la façon dont les fournisseurs de services sont construits et de la manière dont ils travaillent avec les applications Laravel est extrêmement précieux. Bien entendu, les fournisseurs de services par défaut de votre application seront stockés sous app/Providers
. app/Providers
下面。
默认的, AppServiceProvider
AppServiceProvider
est vide. Ce fournisseur est un bon endroit pour ajouter les propres liaisons d'amorçage et de conteneur de services de votre application. Bien entendu, dans les grands projets, vous souhaiterez peut-être créer plusieurs fournisseurs de services plus précis. .