2 ThinkPHP5框架的生命周期:从发出请求到响应完成

URL请求的生命周期
客户端通过URL发送访问请求
服务器端返回请求数据

TP5的生命周期
入口文件-->引导文件-->注册自动加载-->注册错误和异常机制-->应用初始化-->URL访问检测-->路由检测-->分发请求-->响应输出-->应用结束

1.入口文件
-1.文件名:index.php;
-2.位置:public/index.php;
-3.用户通过入口文件,发起服务请求,是整个应用的入口与起点;
-4.任务:定义常量,加载引导文件,不要放任何业务处理代码;
-5.代码: //定义项目路径
define('APP_PATH',DIR.'/../application/');
//加载框架引导文件
require DIR.'/../thinkphp/start.php';

2.引导文件
-1.文件名:start.php;
-2.位置:thinkphp/start.php;
-.执行: 加载常量-->加载环境变量-->注册自动加载-->注册错误与异常-->加载管理配置-->执行应用

3.注册自动加载
-1.类方法:Loader::register();
-2.作用:将所有符号规范的类库(包括Composer依赖加载的第三方类库)自动加载;
-3.执行流程: 注册自动加载方法: think\Loader::autoload --> 注册系统命名空间 --> 加载类库映射文件 --> 注册Composer自动加载 --> 注册extends扩展目录

4.注册错误和异常机制
执行Error::register()注册错误和异常处理1机制.
由三部分组成:
-1.应用关闭方法:think\Error::appShutdown
-2.错误处理方法:think\Error::appError
-3.异常处理方法:think\Error::appException

5.应用初始化
严格意义上讲,前面的内容都可算做应用初始化部分:
加载公共配置 --> 加载公共扩展配置 -->加载应用状态配置 --> 加载别名配置 -->
--> 加载行为定义 --> 加载公共函数文件 -->注册应用命名空间 --> 加载扩展函数文件 --> 设置默认时区 --> 加载系统语言包

6.URL访问检测
URL必须是PATH_INFO格式才允许继续运行.
1.PATH_INFO标准格式:
http://域名/index.php/模块名/控制器名/操作名/参数键值对
举例: http://tp5.com/index.php/index/user/add/id/10/name/peter
2.PHTH_INFO兼容格式:
http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对
举例: http://tp5.com/index.php?s=index/user/add&id=10&name=peter

7.路由检测
-1.如果开启了url_route_on参数,则首先进行URL路由检测;
-2.一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度;
-3.TP5支持的路由规则如下:

  • 路由到模块/控制器/操作;(这是默认路由模式,如果关闭路由或者路由检测无效则执行该模式)
  • 路由到外部重定向地址;
  • 路由到控制器方法;
  • 路由到闭包函数;
  • 路由到类的方法;

8.分发请求
-1.将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据;
-2.统一使用return返回数据,不要用echo直接输出;
-3.如非必要,请不要使用exit或者die中断执行;
-4.分发请求支持TP5的五种路由地址模式:
路由到模块/控制器/操作; 路由到外部重定向地址; 路由到控制器方法; 路由到闭包函数; 路由到类方法;

9.响应输出
-1.控制器正常返回的数据通常是:字符串(String)或数组(Array)格式;
-2.统一使用return返回数据,而不是直接输出,这样可以自动调用
Response::send()方法将最终的返回数据输出到页面或者客户端,
并自动转换成default_return_type参数配置的格式(XML,JSON等).
return 'ThinkPHP教学教程';

10.应用结束
-1.响应输出完成后,应用生命周期基本结束,可以写日志报告啦;
-2.日志包括二部分:用户调试输出和系统自动生成;
-3.日志在应用结束后,自动写入.

总结:介绍了TP5框架中,一个应用从发出url请求,到正确获取到响应数据的完整流程.这里只是快速浏览,
执行细节在后介绍.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355