tp3与tp5的区别

tp3与tp5的区别前言不论是学习使用 tp3 tp5 还是面试 我们经常都会提到 thinkPHP3 和 thinkPHP5 的一些区别有哪些 下面我对这两者的一些区别做了一些总结 表面的区别 并不涉及内核 1 控制器输入函数不同在 tp3 中 我们输出视图是 this gt display 但是在 tp5 中 输出视图函数是 this gt fetch 2 单字母函数的去除在 tp3 中 我们可能会经常使用到的一些单

前言

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202602.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:44
下一篇 2026年3月19日 下午11:45


相关推荐

发表回复

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

关注全栈程序员社区公众号