图示
步骤
1 加载项目依赖。
2 创建Laravel应用实例
1、创建容器
2、绑定内核
3 接收请求并响应。
4 关闭
第一步骤:加载依赖 index.php
// composer自动加载机制
require __DIR__.'/../vendor/autoload.php';
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit101671ca9bbc2f62f8335eb842637291::getLoader();
第二步骤:建应用实例 app.php
通过 public/index.php 来启动框架的,都会用到 Http Kernel 接受请求并返回响应
HTTP内核类的父类 包括环境检测、加载配置、处理异常、Facades注册、服务提供者注册、启动服务
Console 内核 通过artisan命令、计划任务、队列等启动框架进行处理
$app = require_once __DIR__.'/../bootstrap/app.php';
// 创建Laravel应用的ioc容器,
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
// 完成内核的绑定
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
App\Http\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
// 返回实例
return $app;
第三步骤:接收请求并响应
1、将 request 请求实例注册到 app 容器当中
2、清除之前的 request 实例缓存
3、启动引导程序:加载内核中定义的引导程序来引导启动应用
4、将请求发送到路由:通过 Pipeline 对象传输 HTTP请求对象流经框架中定义的HTTP中间件和
路由器来完成过滤请求,最终将请求传递给处理程序(控制器方法或者路由中的闭包)
由处理程序返回相应的响应。
第四步骤:关闭
响应完成后,HTTP 内核会调用 terminate 中间件做一些后续的处理工作。
调用完成后,整个生命周期结束。