当前位置: 首页 > 后端技术 > PHP

Laravel请求周期

时间:2023-03-29 14:43:43 PHP

Laravel请求循环加载composerautoloaderrequire__DIR__.'/../bootstrap/autoload.php';getApplicationobjectLaravel实例化应用解析//这个$app对象贯穿全文$app=require_once__DIR__.'/../bootstrap/app.php';主流程:1.设置基本路径2.基本绑定3.注册全局基础服务4.设置核心容器别名5.注册三个单例获取Kernel对象Laravel内核实例化//这个$kernel对象是hubLaravel应用程序,协调各部分之间的工作来完成请求$kernel=$app->make(Illuminate\Contracts\Http\Kernel::class);主要流程:1.注入应用对象2.注入事件对象3.注入路由集合对象4.注入路由对象5.将各个中间件注入路由对象,获取Request对象$request=Illuminate\Http\Request::capture()主要过程:1.Delegate\Symfony\Component\HttpFoundation\Request组件,并注入全局变量(封装到相应的对象中),创建一个基本请求对象2.通过基本请求对象创建$request,处理Request对象,返回Response对象Laravel内核实例化后的Laravel内核处理流程分析Laravel中间件Laravel路由处理Laravel响应准备Laravel路由执行$response=$kernel->handle($request=Illuminate\Http\Request::capture());主要流程:1.注入请求对象($request)2.根据配置项设置应用的运行环境(包括加载和设置系统环境变量、加载配置文件、设置系统错误异常、设置Facade、注册服务提供者用于配置项,以及用于服务提供商的启动引导项)和触发对应事件3.处理全局中间件4.路由解析(请求分发、路由查找、路由匹配、路由分隔符设置、事件分发、路由执行)5.通过路由解析返回的内容创建$response对象6.设置$response响应对象的标头发送响应$response->send();执行后续操作$kernel->terminate($request,$response);主流程:1.获取中间件并尝试触发每个中间件的terminate方法2.触发terminate事件

猜你喜欢