生命周期
1、入口文件
用户发送的请求都会经过应用的入口文件,通常是 public/index.php 文件。通常入口文件的代码都比较简单,一个普通的入口文件代码如下:

// 定义项目路径
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

一般入口文件定义一些常量为主,不建议在应用入口文件加入过多的代码,尤其是和业务逻辑相关的代码。
2、引导文件
接下来就是执行框架的引导文件,start.php 文件就是系统默认的一个引导文件。在引导文件中会依次执行下面操作:
a、加载系统常量定义;
b、加载环境变量定义文件;
c、注册自动加载机制;
d、注册错误和异常处理机制;
e、加载惯例配置文件;
f、执行应用
start.php 引导文件首先会调用 base.php 基础引导文件,某些特殊需求下面可能直接在入口文件中引入基础引导文件。
3、注册自动加载
系统会调用 Loader::register() 方法注册自动加载,在这一步完成后,所有符合规范的类库(包括 composer 依赖加载的第三方类库)都将自动加载。

4、注册错误和异常机制
执行 Error::register() 注册错误和异常处理机制。由三部分组成:
a、应用关闭方法:think\Error::appShutdown
b、错误处理方法:think\Error::appError
c、异常处理方法:think\Error::appException
在整个应用请求的生命周期过程中,如果抛出一个异常或者严重错误,均会导致应用提前结束,并响应输出异常和错误信息。
5、应用初始化
执行应用的第一步操作就是对应用进行初始化,包括:
a、加载应用(公共)配置;
b、加载扩展配置文件(由extra_config_list定义);
c、加载应用状态配置;
d、加载别名定义;
e、加载行为定义;
f、加载公共(函数)文件;
g、注册应用命名空间;
h、加载扩展函数文件(由extra_file_list定义);
i、设置默认时区;
j、加载系统语言包;
6、URL访问检测
7、路由检测
如果开启了url_route_on参数的话,会首先进行URL的路由检测,如果一旦检测到匹配的路由,根据定义的路由地址会注册到相应的URL调度。
8、分发请求
9、响应输出

10、应用结束
事实上,在应用的数据响应输出之后,应用并没真正的结束,系统会在应用输出或者中断后进行日志保存写入操作。
系统的日志包括用户调试输出的和系统自动生成的日志,统一会在应用结束的时候进行写入操作。

TP框架 与 Laravel框架
TP框架:ThinkPHP简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。

Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目,被称为“巨匠型开发框架”。

TP框架和Laravel框架的区别:
1、防跨站攻击:Laravel在提交表单时需要在表单中加入{{csrf_field()}};而TP不会。
2、路由:Laravel必须先定义,再使用,路由文件为routes.php;TP在配置文件中开启路由后,路由格式是:‘路由表达式’ => ‘路由地址和参数’(使用路由的前提是URL支持phthinfo并且开启路由),路由可以使URL更符合SEO。
3、渲染模版方式:在Laravel框架里,使用return view()来渲染模版;而ThinkPHP里则使用了$this->display()的方式渲染模版。
4、操作数据库方式:都可以使用实例化(建立相对应的模型类)和DB:table(‘表名’)来操作数据库,使用原生查询时不太相同,Laravel使用Db::操作(‘原生sql’),TP使用Db::query(‘原生sql’)。
5、条件判断语句书写方式:Laravel框架里 if else判断语句和foreach语句 书写时必须以@if开头 以@endif结尾,如果没有则报语法错误,@foreach @endforeach同理。而TP框架则和PHP语法规则使用方式一致直接ifesle语句判断和foreach循环遍历
6、中间件,Laravel特点,可以实现访问前后的处理,例如请求和返回,权限认证等。
7、Laravel升级十分简易,而TP大版本的升级要重构代码。

thinkPHP框架相关推荐

  1. 使用xdebug分析thinkphp框架函数调用图

    开发中需要性能调优,使用xdebug分析thinkphp框架函数调用图. 关于xdebug的安装参考这2篇 NetBeans配置Xdebug 远程调试PHP php扩展xdebug安装以及用kcach ...

  2. 从ThinkPHP框架核心讨论C、E、G、L、T、I、N...等函数

    如果只是从了解怎么用这几函数的角度看,直接看官方发布的文档即可!但是要了解这些函数是怎么被ThinkPHP框架定义调用的,那需要另外一番讨 论了.还好,ThinkPHP官方在源码力做了很好的注释,通过 ...

  3. thinkphp 框架自动加载原理_ThinkPHP5分析Part 1 基本框架流程

    ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能 ...

  4. php阿里大于验证码开发,阿里大于验证码发送 (ThinkPhp框架)

    1.登录平台 阿里大于 2.登陆之后我们可以看到资费,使用场景等,在进入正题之前我们需要一些准备工作,首先我们先了解下短信的请求参数,在这里我们需要注意的是sms_param这个参数,在接下来我们申请 ...

  5. ThinkPHP框架搭建网站

    ThinkPHP框架搭建网站 第一步:找网页模板(不会美工,PS,见谅..) 前端页面我找的是一个大学的实验室,这里就不贴了,很普通的那种.后台直接下载的模板,感觉蛮漂亮的,运行后如下图: 第二步:初 ...

  6. ThinkPHP 框架培训资料

    2019独角兽企业重金招聘Python工程师标准>>> ┎━ThinkPHP 框架系统目录 ┃ ┝ ThinkPHP.php 系统公共文件 ┃ ┝ Common 公共文件目录 ┃ ┝ ...

  7. thinkphp框架使用心得

    接触的第一个PHP框架就是TP,在使用的了一段时间后就放弃了,说实话TP的弊端挺多,之后又接触laravel框架,慢慢的就爱上laravel这个框架了.这段时间由于公司的原因,又不得不使用thinkp ...

  8. 【ThinkPHP系列篇】Thinkphp框架的CURD操作(三)

    本节介绍的CURD的基本操作依托于Thinkphp框架的第二节中的News例子. a) 什么是CURD操作? C(创建):create:U(更新):update:R(读取):read:D(删除):de ...

  9. 【ThinkPHP系列篇】ThinkPHP框架的介绍和搭建(一)

    各位博友好,最近博主学了关于ThinkPHP的一些基本操作,感觉很有收获,所以作为小白的我想与大家分享一些关于ThinkPHP的搭建及基本操作,感觉更适合初学者来学习,当然也希望大牛们能够给小白我提出 ...

  10. ThinkPHP框架学习(二)

    在上一节中,我主要讲到了如何获取ThinkPHP框架,以及虚拟目录和虚拟主机的配置.准备工作完成之后,就可以利用ThinkPHP去部署项目了. 先在工作目录(D:/zend/workspace)下新建 ...

最新文章

  1. 【js细节剖析】通过=操作符为对象添加新属性时,结果会受到原型链上的同名属性影响...
  2. Java学习_day009面向对象(oop):对象和类(下)
  3. 存储在icloud云盘文件夹顶层_苹果iCloud使用技巧:去弹窗~
  4. Spring 建立简单的示例
  5. java前后端数据交互_前后端数据交互(示例代码)
  6. [模板]LIS(最长上升子序列)
  7. 见微知著(一):解析ctf中的pwn--Fast bin里的UAF
  8. java数据结构之选择排序
  9. CSS 伪类(Pseudo-classes)
  10. 注册表把html设置成桌面,[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...
  11. ubuntu中flash中文乱码的问题解决
  12. 验证码生成php代码,一个php验证码生成类代码
  13. 多线程访问共同的代码或者对象:lock避免出错
  14. 数字证书是什么原理,有什么作用?
  15. Pysyft学习笔记
  16. 透视HTTP协议-进阶篇-极客时间-学习笔记
  17. 【机器翻译machine translation】
  18. do还是doing imagine加to_to-do和doing用法及区别
  19. 比特交织 matlab,比特交织空时编码不对称调制方案及软件分析
  20. MSI Z390主板双SSD+HDD,win10系统下安装Ubuntu18.04LTS双系统总结

热门文章

  1. 高等工程热力学复习01
  2. 飘逸的python - 使用图像匹配SIFT算法进行LOGO检测
  3. DLL入口函数DllMain
  4. 关键接口性能测试报告
  5. 博士学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞,网友:这是知乎最好的回答...
  6. AD转换实验c语言原理图,我的AD/DA转换单片机实验,含原理图和源码
  7. 《缠中说禅108课》58:图解分析示范三
  8. 分类问题-决策树模型
  9. 计算机技术概论知识点,《计算机基础概论》知识点.pdf
  10. AtCoder题解——Beginner Contest 168——E - ∙ (Bullet)