TP5的生命周期
入口文件->引导文件->注册自动加载->注册错误和异常机制->应用初始化->URL访问检测->路由检测->分发请求->响应输出->应用结束
入口文件
1. 文件名:index.php
2. 位置:public/index.php
3. 用户通过入口文件,发起服务请求,是整个应用的入口与起点
4. 任务:定义常量,加载引导文件,不要放任何业务处理代码
5. 代码:
//定义项目路径
define('APP_PATH',__DIR__.'/../application/');
// 加载框架引导文件
require __DIR__.'/../thinkphp/start.php';
引导文件
1. 文件名:start.php;
2. 位置:thinkphp/start.php;
3. 执行:加载常量->加载环境变量->注册自动加载->注册错误与异常->加载惯例配置->执行应用
注册自动加载
1. 类方法:Loader::register();
2. 作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载;
3. 执行流程:注册自动加载方法:\think\Loader::autoload->注册系统命名空间->加载类库影射文件->注册Composer自动加载->注册extend扩展目录
注册错误和异常机制
执行Error::register()注册错误和异常处理机制。
由三部分组成:
1. 应用关闭方法:think\Error::appShutdown
2. 错误处理方法:think\Error::appError
3. 异常处理方法:think\Error::appException
应用初始化
加载公共配置->加载公共扩展配置-> 加载应用状态配置-> 加载别名定义-> 加载行为定义-> 加载公共函数文件-> 注册应用命名空间-> 加载扩展函数文件-> 设置默认时区-> 加载系统语言包
URL访问检测
URL必须是PATH_INFO格式才允许继续运行
路由检测
1. 如果开启了url_route_on参数,则首进行url路由检测;
2. 一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度
3. TP5支持的路由规则如下:
路由到模型/控制器/操作;
路由到外部重定向地址
路由到控制器方法
路由到闭包函数
路由到类的方法
分发请求
1. 将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据
2. 统一使用return返回数据,不要用echo直接输出
3.如非必要,请不要使用exit或者die中断执行
4.分发请求支持TP5的物种路由地址模式:
路由到模型/控制器/操作;
路由到外部重定向地址
路由到控制器方法
路由到闭包函数
路由到类的方法
响应输出
1. 控制器正常返回的数据通常是:字符串(String)或者数组(Array)格式
2.统一使用return返回数据,而不是直接输出,这样可以自动调用Response::send()方法将最终的返回数据输出到页面或者客户端,并自动转换成default_return_type参数配置的格式(XML,JSON等)
应用结束
1. 响应输出完成后,应用生命周期基本结束,可以写日志报告啦;
2. 日志包括二部分:用户调试输出和系统自动生成
3. 日志在应用结束后,自动写入
网友评论