thinkphp 框架HTTP请求流程
💡
原文中文,约1000字,阅读约需3分钟。
📝
内容提要
本文介绍了thinkphp框架HTTP请求的流程,包括autoload文件、系统应用基础类、路径信息、全局服务提供文件、HTTP应用类的run方法、路由调度等步骤。最后,执行HTTP应用对象的end方法善后,写入请求日志信息,请求流程结束。
🎯
关键要点
- HTTP应用请求流程从用户发起请求到响应输出结束。
- 载入Composer的自动加载文件,实例化系统应用基础类think\App。
- 获取应用目录等相关路径信息,加载全局服务提供文件provider.php。
- 设置容器实例及应用对象实例,确保当前容器对象唯一。
- 从容器中获取HTTP应用类think\Http,执行其run方法启动HTTP应用。
- 获取当前请求对象实例并保存到容器,执行think\App类的初始化方法initialize。
- 加载环境变量文件.env和全局初始化文件,加载全局公共文件、系统助手函数等。
- 判断应用模式(调试或部署模式),监听AppInit事件,注册异常处理和服务。
- 启动注册的服务,加载全局中间件定义,监听HttpRun事件,执行全局中间件。
- 执行路由调度,检查路由缓存,加载路由定义,监听RouteLoaded事件。
- 初始化路由调度对象think\route\Dispatch,设置当前请求的控制器和操作名。
- 执行数据自动验证,执行路由调度子类的exec方法返回响应think\Response对象。
- 获取当前请求的控制器对象实例,利用反射机制注册控制器中间件。
- 执行控制器方法及前后置中间件,执行当前响应对象的send方法输出。
- 执行HTTP应用对象的end方法善后,监听HttpEnd事件,执行中间件的end回调。
- 写入当前请求的日志信息,请求流程结束。
➡️