了解一次laravel的请求生命周期可以加深对框架底层的理解.
public/index.php : 请求的入口文件和出口文件
动作 | 作用 |
加载/../bootstrap/ autoload.php | 设置环境变量 起始时间 生成请求唯一qid 载入 Composer 生成的自动加载设置 /../vendor/autoload.php 生成一个32位字符串的composer加载类的对象, 会引入所有的类进行注册,并逐个引入类文件 |
加载/../bootstrap/ app.php 获取laravel应用实例$app | 生成请求laravel应用实例$app(服务容器) 实例绑定重要的接口 App\Http\Kernel, App\Console\Kernel, App\Exceptions\Handler 实例绑定环境配置文件 实例绑定monolog日志 |
$kernel = $app->make (Illuminate\Contracts\Http\Kernel::class) | 由于前面$app绑定了Http/Kernel类, 这里创建实例. |
$response = $kernel->handle($request = Illuminate\Http\Request::capture()); | 请求被发送到 HTTP 内核或 Console 内核(分别用于处理 Web 请求和 Artisan 命令),这取决于进入应用的请求类型。这两个内核是所有请求都要经过的中央处理器, 现在,就让我们聚焦在位于 app/Http/Kernel.php 的 HTTP 内核。 |
vendor/laravel/framework/src/ Illuminate/Foundation/Http/Kernel.php | HTTP内核继承自
内核启动过程中最重要的动作之一就是为应用载入,应用的所有服务提供者都被配置在 服务提供者负责启动框架的所有各种各样的组件,比如数据库、队列、验证器,以及路由组件等,正是因为他们启动并配置了框架提供的所有特性,所以服务提供者是整个 Laravel 启动过程中最重要的部分。 应用默认的服务提供者存放在 默认情况下, |
HTTP 内核还定义了一系列所有请求在处理前需要经过的 HTTP ,这些中间件处理 的读写、判断应用是否处于维护模式、验证 等等。 (__construct方法) | |
handle方法 获取一个
|
服务提供者是启动 Laravel 应用中最关键的部分,应用实例被创建后,服务提供者被注册,请求被交给启动后的应用进行处理,整个过程就是这么简单!