前段时间用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类将结果输出的界面时,整个生命周期还并未结束。

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

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

最新文章

  1. 使用手机展示axure
  2. apache反向代理
  3. [zz]谱聚类
  4. dependencies 和 devDependencies
  5. [福利]非认证公众帐号也能申请微信连Wi-Fi了
  6. mui开发
  7. (1)html开头解说与案例演示
  8. servlet示例
  9. MySQL中的insert ignore into, replace into等的一些用法小结(转)
  10. [Unity]Unity开发NGUI代码实现ScrollView(滚动视图)
  11. MySQL导出以H开头的表
  12. 搭建typescript开发环境最详细的全过程
  13. 发布高性能迷你React框架anu
  14. LINUX signal 信号
  15. python类(class)中参数self的解释说明
  16. springboo+nginx测试反向代理01
  17. ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
  18. mac版本查看日志命令
  19. 网络编程socketserver实现并发
  20. 在Java中,以下关于方法重载和方法重写描述正确的是?

热门文章

  1. 后端队列生成pdf,发送到邮箱
  2. Update LateUpdae FixedUpdate
  3. Lua索引、伪索引、引用
  4. Queries for Number of Palindromes(区间dp)
  5. CSS中的包含块
  6. jinja2快速实现自定义的robotframework的测试报告
  7. OpenvSwitch系列之七 meter表限速
  8. Linux服务器被入侵后的处理过程
  9. basicInterpreter1.01 支持分支语句
  10. Agumaster 改善了pagination