ThinkPHP之HTTP请求流程对于⼀个HTTP应⽤来说,从⽤户发起请求到响应输出结束,⼤致的标准请求流程如下:
加载Composer的⾃动加载(autoload)⽂件
实例化系统应⽤基础类think\App
获取应⽤⽬录等相关路径信息
加载全局的服务提供provider.php⽂件
设置容器实例及应⽤对象实例,确保当前容器对象唯⼀
从容器中获取Http应⽤类think\Http
执⾏Http应⽤类的run⽅法启动⼀个Http应⽤
获取当前请求对象实例(默认为app\Request继承think\Request)保存到容器
执⾏think\App的初始化⽅法initialize
加载环境变量⽂件.env和全局变量⽂件
加载全局公共⽂件、系统助⼿函数、全局配置⽂件、全局事件定义和全局服务定义
判断应⽤模式(调试或部署模式)
监听AppInit事件
注册异常处理
服务注册
启动注册的服务
加载全局中间件定义
监听HttpRun事件
执⾏全局中间件
执⾏路由调度(Route类dispatch⽅法)
如果开启路由则检查路由缓存
加载路由定义
监听RouteLoaded事件
如果开启注解路由则检测注解路由
路由检测
路由调度对象(think\route\Dispatch初始化)
设置当前请求的控制器和操作名
注册路由中间件
绑定数据模型
设置路由额外参数
执⾏数据⾃动验证
执⾏路由调度⼦类exec⽅法返回响应think\Response对象
php实例手册获取当前请求的控制器对象实例
利⽤反射机制注册控制器中间件
执⾏控制器⽅法以及前后置中间件
执⾏当前响应对象的send⽅法输出
执⾏Http应⽤对象的end⽅法善后
监听HttpEnd事件
执⾏中间件的end回调
写⼊当前请求的⽇志信息
⾄此,当前请求流程结束。
注:转载于ThinkPHP官⽅⼿册
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论