ThinkPHP 5 生命周期

前段时间用TP5开发了一个小程序,就熟悉了一下TP5。TP5是TP框架最新的一个版本,与以前的3还是有很大的区别,有人说和laravel比较靠近,其实也还好,每个人都有自己不同的看法,只要是选择一个自己用起来比较顺手的框架就好了。

我在学习一个框架的时候,最开始还是先看一下生命周期,真正了解生命周期之后,才能做到对整个框架整体的把握,在细节方面也能更好的理解。


1:入口文件:

TP5的入口文件在public文件下,是整个程序的入口,当然你也可以把文件移到根目录下,修改一下index.php文件里的应用目录和启动文件目录就好了。

在该文件中,功能很简单就是定义应用目录,然后加载引导文件

 

 

2:引导文件

下面我们顺着引导找到了start.php。发现里面引入了base.php,其实base文件也是一个引导文件,里面进行一些变量常量的加载,还有一些机制的注册,比如自动加载机制。

加载系统常量定义;
加载环境变量定义文件;
注册自动加载机制;
注册错误和异常处理机制;
加载惯例配置文件;
执行应用;

 


3.接着就到了应用类
应用类第一步进行了初始化操作,包括以下部分:


加载应用(公共)配置;
加载扩展配置文件(由extra_config_list定义);
加载应用状态配置;
加载别名定义;
加载行为定义;
加载公共(函数)文件;
注册应用命名空间;
加载扩展函数文件(由extra_file_list定义);
设置默认时区;
加载系统语言包;

 


4.URL检测
初始化完成后就会对URL进行检测,获取到请求地址信息。

请求URL必须为PATHINFO格式,否则则视为非法URL。

如果环境只支持普通格式则必须为以下格式:


http://serverName/index.php?s=/index/index/hello&val=value

 


5.路由检测

如果开启路由检测,则优先将URL与路由进行匹配,匹配成功则走路由调度,否则就走默认的分析识别。

开启配置为 url_route_on

 

 

6.请求分发

这一步是整个生命周期最重要的环节,也是我们接触最多的环节,URL会根据不同的调度找到的我们的控制器,运行控制器里面的方法,

经过一系列我们的代码处理后,得到结果。

 

 

7.响应输出

当我们的控制器处理完毕,return之后,就会有Response类将返回的结果输出到界面客户端,我们可以指定默认的格式,一般是json格式。

 

 

8.程序结束

其实当我们的Response类将结果输出的界面时,整个生命周期还并未结束。

到目前我们还没有说到日志,日志一般都是在生命周期完成的时候才会写入,所以,此时的框架任务就是把我们本次生命周期的信息写入日志。

 

至此,整个生命周期结束。

上一篇:ThinkPHP 5 中AJAX跨域请求头设置方法【转】


下一篇:差分滤波器的介绍及用于图像特征检测