问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ThinkPHP 5.0和ThinkPHP 3.2的区别

发布网友 发布时间:2022-04-24 20:44

我来回答

2个回答

热心网友 时间:2022-04-07 06:49

5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。
URL和路由
5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规则(正则定义)的方式:
主要改进如下;
增加路由变量规则;
增加组合变量支持;
增加资源路由;
增加路由分组;
增加闭包定义支持;
增加MISS路由定义;
支持URL路由规则反解析;
请求对象和响应对象
5.0新增了请求对象Request和响应对象Response,Request统一处理请求和获取请求信息,Response对象负责输出客户端或者浏览器响应。
模块和控制器
控制器的命名空间有所调整,并且可以无需继承任何的控制器类。
应用命名空间统一为app(可定义)而不是模块名;
控制器的类名默认不带Controller后缀,可以配置开启use_controller_suffix参数启用控制器类后缀;
控制器操作方法采用return方式返回数据 而非直接输出;
废除原来的操作前后置方法;
增加beforeActionList属性定义前置操作;
支持任意层次的控制器定义和访问;
URL访问支持自动定位控制器;
数据库
5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:
3.2版本
M('User')->where(['name'=>'thinkphp'])->find();
5.0版本
db('User')->where('name','thinkphp')->find();
主要改进如下:
支持链式查询操作;
数据查询支持返回对象、数组和PDOStatement对象;
数据集查询支持返回数组和Collection对象;
增加查询构造器,查询语法改变;
支持闭包查询;
支持分块查询;
支持视图查询;
增加SQL监听事件;
模型
5.0的模型变化是最大的,基本上模型是完全面向对象的概念,包括关联模型,模型类的后缀不再带Model,直接由命名空间区分,原来的D函数调用改为model函数,并且必须创建对应的模型类,例如:
3.2版本
D('User')->where(['name'=>'thinkphp'])->find();
5.0版本
model('User')->where('name','thinkphp')->find();
主要改进包括:
重构关联模型;
支持聚合模型;
废除视图模型(改为数据库的视图查询方法);
模型的扩展采用Trait机制;
增加获取器和修改器;
增加时间戳自动写入;
增加类型字段转换;
数组访问支持;
JSON序列化支持;
自动验证和自动完成
5.0的数据自动验证和自动完成和3.2版本区别较大,5.0的数据验证采用验证器定义并且通过think\Validate类进行统一的验证。自动完成则通过在模型里面定义修改器来完成。
异常
5.0对错误零容忍,默认情况下会对任何级别的错误抛出异常(但可以在应用公共文件中设置错误级别),并且重新设计了异常页面,展示了详尽的错误信息,便于调试。
调试和日志
5.0的页面Trace强化,支持浏览器控制台查看Trace信息。
5.0的日志驱动增加Socket方式,采用SocketLog支持远程调试。
常量
5.0版本废弃了原来的大部分常量定义,仅仅保留了框架的路径常量定义,其余的常量可以使用App类或者Request类的相关属性或者方法来完成,或者自己重新定义需要的常量。
废除的常量包括:
REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEBUG MODULE_PATH
函数
5.0版本核心框架不依赖任何自定义函数,但仍然封装了一些常用功能到助手函数,你可以随意重新定义或者增加助手函数。

热心网友 时间:2022-04-07 08:07

URL和路由

5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规则(正则定义)的方式:

主要改进如下:

1.增加路由变量规则;

增加组合变量支持;
增加资源路由;
增加路由分组;
增加闭包定义支持;
增加MISS路由定义;
支持URL路由规则反解析;

2.请求对象和响应对象

5.0新增了请求对象Request和响应对象Response,Request统一处理请求和获取请求信息,Response对象负责输出客户端或者浏览器响应。

3.废除原来的操作前后置方法;

增加beforeActionList属性定义前置操作;
支持任意层次的控制器定义和访问;
URL访问支持自动定位控制器;

4.数据库

5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:

3.2版本

M('User')->where(['name'=>'thinkphp'])->find();

5.0版本

db('User')->where('name','thinkphp')->find();

5.自动验证和自动完成

5.0的数据自动验证和自动完成和3.2版本区别较大,5.0的数据验证采用验证器定义并且通过think\Validate类进行统一的验证。自动完成则通过在模型里面定义修改器来完成。

6.异常

5.0对错误零容忍,默认情况下会对任何级别的错误抛出异常(但可以在应用公共文件中设置错误级别),并且重新设计了异常页面,展示了详尽的错误信息,便于调试.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天涯论坛的网址是什么啊? 如何辨别天涯社区的官方网站? 天涯社区的官方网址是什么呀? 嘉陵火星人(150CC)报价 广西能上150C的摩托车牌吗 隆鑫200cc和150cc的发动机怎么辨认_百度问一问 150cc大船摩托车问题!请高手帮我·· 我想问问这是125cc还是150cc 滁州琅琊山的门票要多少钱 为什么手机连上WiFi却无法上网了? laravel和thinkphp的区别 办理营业执照的条件是什么? thinkphp框架和dedecms这两个东西的区别是什么,分别是干什么用的? thinkphp与php的区别 thinkphp和zend framework有什么区别?那个比较好用 laravel和thinkphp的区别是什么? speedphp和thinkphp的区别,两个都是框架,有谁两个都用过的吗?有什么区别? thinkphp和microphp哪个好 求大神 解释smarty和thinkphp的区别 HDphp和ThinkPHP框架有什么区别吗 织梦建站、phpcms建站、thinkphp有什么区别 php面向对象和thinkphp哪个好 显卡配置上的E5是什么意思 e5处理器能玩游戏嘛 现在大家说的e5的cpu都是指什么,e3 1230v2比e5 2650 v2 e5最强cpu是哪个 什么是e5处理器? 为什么微信搜索文章或者公众号显示不了,显示无法连接网络?? 微信连wifi功能通过公众号菜单无法连接 无法搜索微信公众号,提示信号弱,或安全软件禁止访问网络(网络实际有用) YII框架和THINKPHP的区别是什么? 如果把ins卸载被人还能看到作品吗? 宋茜把ins的贴都删完了,宋茜是出什么事了? 如何将ins账户设置为私有 把ins注销了,这个号的后台数据登陆信息在服务器会没有吗 把ins改为私人原有的粉丝会不会看到 个人健康证怎么办理 怎样办理健康证 健康证怎样办理流程 10000字大学生职业生涯规划 职业生涯规划作文10000字 个人职业生涯规划书怎么写 大学生涯规划书例子 大学生职业规划的意义 求一篇片大学生职业规划书 我是大一的 要三千字左右 我是采矿工程的 速度 好的话可以追分 求一篇《大学生职业生涯与规划》国贸·· 我是大一的· 老师就叫我们写大学4年的规划·· 跪求啊· 时间紧 求大学生就业计划书!怎么写呀!尤其是开头。希望大家帮帮忙 求10000字大学生职业规划书!!! 求一份大学生职业规划 要WORD 文档的 关于参加大学生“创新创业”大赛的调研论文投稿的问题?