基本的生命周期:
入口文件
idnex.php 就是入口文件,位置在public目录下,用户通过这个文件发起请求
定义常量并加载引导文件。不能放置任何的业务处理代码。
引导文件
start.php 文件
执行的工作原理为:加载常量->加载环境变量->注册自动加载->注册错误和异常->加载惯例配置->执行应用
注册自动加载
类方法:Loader::register()
作用:将所有符合规范的类库(包括composer依赖加载的第三方类库)自动加载。
执行流程:注册自动加载方法{\think\Loader::autoload}->注册系统命名空间->加载类库映射文件->注册composer自动加载->注册extend扩展目录。
注册错误和异常处理机制
执行Error::register()注册错误和异常处理机制。
应用初始化
严格意义上来说,前面的内容都可以算是应用初始化部分。
URL访问检测
URL必须使用PATH_INFO格式才允许继续运行。
PATH_INFO标准格式:https://域名/index.php/模块名/控制器名/操作方法名/参数
兼容模式:https://域名/index.php?s=模块名/控制器名/操作方法名&参数
所有参数为键值对形式。
路由检测
如果开启了路由模式(url_route_on),会首先检测路由。
一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度。
tp5支持的路由规则:↓↓↓
分发请求
将用户请求分发到对应的路由地址,完成应用的逻辑并返回数据。
统一使用return返回,不能用echo直接输出。
如非必要,不要使用exit或者die中断执行。
分发请求支持tp5的五种路由地址模式:
如上图tp5支持的路由规则↑↑↑
响应并输出
正常返回的数据是数组或者字符串。
建议统一使用return返回,不要用echo输出,这样会执行完毕调用Response::send() 方法将最终的数据结果输出到页面,并自动转换成default_return_type参数配置的格式(JSON、XML等)。
应用结束
响应结束过后,生命周期基本结束,可以写日志报告。
日志包括两部分,用户调试输出和系统自动生成。
日志在结束之后会自动写入的。