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回调。
  • 写入当前请求的日志信息,请求流程结束。
➡️

继续阅读