Laravel 请求周期

Laravel 请求周期

加载 composer 自动加载器

require __DIR__.'/../bootstrap/autoload.php';

获取 Application 应用对象 Laravel 实例化应用解析

// 此 $app 对象贯穿全文
$app = require_once __DIR__.'/../bootstrap/app.php';

主要过程:
    1. 设置基础路径
    2. 基础绑定
    3. 注册全局基础服务
    4. 核心容器别名设置
    5. 注册三个单例

获取 Kernel 对象 Laravel kernel实例化

// 此 $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

处理 Request 对象,返回 Response 对象 Laravel Kernel实例化后的处理 Laravel Kernel引导流程分析 Laravel 中间件 Laravel 路由处理 Laravel 响应准备 Laravel 路由执行

$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 的事件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值