tp3和tp5的区别,tp5与tp3的主要区别

前言

不论是学习使用tp3/tp5还是面试,我们经常都会提到thinkPHP3和thinkPHP5的一些区别有哪些,下面我对这两者的一些区别做了一些总结(表面的区别,并不涉及内核)

1. 控制器输入函数不同

在tp3中,我们输出视图是$this->display);,但是在tp5中,输出视图函数是$this->fetch);

 

2. 单字母函数的去除

在tp3中,我们可能会经常使用到的一些单字母函数已经移除(如:M),D),U),S),C)),但是仍然保留了助手函数的概念,但官方开发推荐尽量少用(未来可能会移除)

M)=>db)

D)=>model)

3. 对TP3的模型类getField方法进行拆分

一个是value方法:用于查询某行的某个值

一个是column方法:用于查询某列的值

用法如下:

//返回某字段的值

db‘think_user’)->where‘id’,1)->value‘name’);

//返回某列的值

//返回数组

db‘think_user’)->where‘status’,1)->column‘name’);

//返回指定ID字段的作为索引的数据

db‘think_user’)->where‘status’,1)->column‘name’,’id’);

 

注意:之前的聚合查询方法仍然有效,比如:count),max)等等

 

4. TP5中的URL不区分大小写

用案例说明就明白了

域名/index/UserType/addType和域名//index/usertype/addtype访问的效果是一样的

 

如果要求区分大小写可以配置url_convert参数,将其设置为false

 

5. 界定符的变化

TP3中的模板标签界定符是<>

TP5中的模板标签界定符是{}

 

6. 控制器类名和模型类不带后缀

7. 数据库操作写法不同

TP3:M‘User’)->where[‘name’=>’thinkphp’])->find);

TP5:db‘User’)->where‘name’,’thinkphp’)->find);

 

8. 请求对象和响应对象

TP5中增加了请求对象Request和响应对象Response,前者统一处理请求和获得请求信息,后者负责输出客户端或浏览器响应。

 

9. 简化常量

TP5抛弃了TP3很多常量定义,仅保留框架路径常量定义,其余常量可以通过App类或者Resquest类的相关属性和方法进行定义,或者自己重新定义需要的常量

REQUEST_METHOD

IS_GET

IS_PSOT

IS_PUT

IS_DELETE

IS_AJAX

__EXT__

COMMON_MOUDULE

MODULE_NAME

CONTROLLER_NAME

ACTION_NAME

APP_NAMESPACE

APP_DEBUG

MODULE_PATH

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注