对于一个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
对象send
方法输出end
方法善后HttpEnd
事件end
回调至此,当前请求流程结束。
1.入口文件(tp5\public\index.php)
作用: 1)定义目录常量。
2)加载框架引导目录。
2.框架引导目录(tp5\thinkphp\start.php)
作用:
1)引导基础文件。
2)对应用进行运行。
3.基础文件(tp5\thinkphp\base.php)
作用:
1)加载系统常量。
2)引入loader类。(tp5\thinkphp\library\think\Loader.php)
3)引入环境变量。
4)注册自动加载机制。
5)注册错误和异常处理机制。(tp5\thinkphp\library\think\Error.php)
6)加载惯例配置。(tp5\thinkphp\convention.php)
4.运行应用(tp5\thinkphp\library\think\App.php)下的RUN方法。
1)加载当前控制器的initCommon()方法。
2)加载当前控制器的init()方法。
a)加载各种配置文件。
b)加载公共文件。
c)加载语言包。
3)设置时区。
4)加载当前控制器的路由检测routeCheck()。
5)调用控制器exec方法。
根据用户请求进行分发处理。
6)根据不同请求类型加载对应文件。module方法。
加载到对应的控制器对应的方法。
5.响应输出
用户看到的所有界面。