Laravel 请求周期
加载 composer 自动加载器
require __DIR__.'/../bootstrap/autoload.php';
// 此 $app 对象贯穿全文
$app = require_once __DIR__.'/../bootstrap/app.php';
主要过程:
1. 设置基础路径
2. 基础绑定
3. 注册全局基础服务
4. 核心容器别名设置
5. 注册三个单例
// 此 $kernel 对象为 Laravel 应用的枢纽,将会协调各部分之间的工作,完成请求
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
主要过程:
1. 注入应用对象
2. 注入事件对象
3. 注入路由集合对象
4. 注入路由对象
5. 将各中间件注入到路由对象
获取 Request 对象
$request = Illuminate\Http\Request::capture()
主要过程:
1. 委托\Symfony\Component\HttpFoundation\Request组件,并注入全局变量(封装成相应的对象),创建基础请求对象
2. 通过基础请求对象创建 $request
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
主要过程:
1. 注入请求对象($request)
2. 根据配置项设置应用的运行环境(包括加载设置系统环境变量、加载配置文件、设置系统错误异常、设置 Facade、注册配置项的服务提供者、启动服务提供者的引导项)并触发相应的事件
3. 处理全局中间件
4. 路由解析(请求分发、路由查找、路由匹配、路由分离器设置、事件分发、路由执行)
5. 通过路由解析返回的 content 创建 $response 对象
6. 设置 $response 对象的响应头
发送响应
$response->send();
执行后续操作
$kernel->terminate($request, $response);
主要过程:
1. 获取中间件,并尝试触发每个中间件的 terminate 方法
2. 触发 terminate 的事件
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。