Laravel 框架请求的生命周期
目录
请求图示
说明
①
②
③
④
⑤
⑥
⑦
⑧
请求图示
说明
①
所有的请求都是经Web 服务器(Apache/Nginx)配置引导到Laravel 应用的入口public/index.php文件。index.php 加载框架其它部分。
如下图:
②
加载 Composer 生成的自动加载设置。
如下图:
③
从 bootstrap/app.php 脚本中检索 Laravel 应用程序的实例,创建一个应用程序/服务容器。
④
根据进入应用程序的请求类型来将传入的请求发送到 位于 app/Http/Kernel.php——HTTP 内核或控制台内核。
⑤
HTTP 内核继承了 Illuminate\Foundation\Http\Kernel类,该类定义了一个 bootstrappers 数组。这个数组中的类在请求被执行前运行,这些 bootstrappers 配置了错误处理,日志, 检测应用环境,以及其它在请求被处理前需要执行的任务。
如下图:
HTTP内核还定义了所有请求被应用程序处理之前必须经过的HTTP中间件 ,这些中间件处理HTTP会话读写、判断应用是否处于维护模式、 验证CSRF令牌 等等。
如下图:
⑥
内核启动将config/app.php 配置文件的 providers 数组中所有应用下的服务提供者通过调用register 注册,之后boot方法才被调用。
服务提供者也是 Laravel 整个引导周期最重要组成部分,给予框架开启多种多样的组件,像数据库,队列,验证器,以及路由组件。只要被启动服务提供者就可支配框架的所有功能。
如下图:
⑦
一旦启动且所有服务提供者被注册,Request 会被递送给路由。
如下图:
⑧
路由将会调度请求,交给绑定的路由或视图、控制器,也当然包括路由绑定的中间件。
最后处理完成后,返回响应结果给客户端。