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版本核心框架不依附任何自定义函数,但仍然封装了一些常用功能到助手函数,你可以随意重新定义或者增加助手函数。

转载于:https://www.cnblogs.com/Dong-Ge/articles/7567858.html

ThinkPHP5.0版本和ThinkPHP3.2版本的差别相关推荐

  1. php cli 错误日志,ThinkPHP5.0.*版本 cli模式下php每隔段时间就出错

    关于ThinkPHP5.0.*版本 cli模式下php每隔段时间就出错 cli模式下php每隔段时间就出错 官方论坛 日志如下: 控制台 Uncaught thinkexceptionErrorExc ...

  2. 网易严选php版本小程序,Thinkphp5.0内核开发仿网易严选微信小程序商城源码 电商小程序源码...

    仿网易严选微信小程序商城源码 电商小程序源码 安装环境:php5.3及以上+mysql,开启https Thinkphp5.0内核开发的电商类小程序源码整站后端+前台仿网易严选商城化妆品电商小程序,完 ...

  3. Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到 17 了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 ‍ ‍文章来源:程序猿DD‍ ‍ 2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M ...

  4. webpack 4.14.0 版本太高,无法执行相关指令,(将webpack高版本切换到低版本)--直接覆盖

    (1)问题: webpack 4.14.0 版本太高,无法执行相关指令, (2) 解决办法:将高版本切换到低版本 (3)实现 webpack 4.14.0 版本太高,无法执行相关指令,指令不熟悉,高版 ...

  5. HAProxy 2.0发布,长期支持版本

    HAProxy 2.0 发布了. HAProxy 是一个使用 C 语言编写的自由及开源软件,其提供高可用性.负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费.快速并且可靠的 ...

  6. 确保您的Silverlight 1.0运行时间组件是最新版本

    欲确保您的Silverlight 1.0运行时间组件是最新版本,请依下列步骤进行: 1.   于内含Silverlight内容的网页上使用鼠标右键单击Silverlight内容,并从快捷菜单中选取Si ...

  7. ASP.NET Core 3.0 实战:构建多版本 API 接口

    第一次在博客写分享,请多多捧场,如有歧义请多多包含! 因为业务需求发展需要,所以API接口的变更升级是必不可少的事情,而原有的接口是不可能马上停止使用的.例如:Login接口为例,1.0版本之返回用户 ...

  8. spyder 5.0.0 提示依赖项spyder-kernels版本错误

    spyder升级5.0.0运行时提示spyder-kernels版本错误 实际上 spyder-kernels已经是 2.0.1 这个错误提示目前可以不理它,待 spyder下个版本修复它. 见:ht ...

  9. 通讯录2.0(动态内存增长版本)

    通讯录2.0 我们在写之前通讯录1.0版本时,通讯录只能存储1000人的信息,若想存储更多人的信息就必须手动修改定义的数值,不够方便.通讯录2.0版本实现了内存的自动增长,若想存储更多人的信息,可以自 ...

  10. Google Chrome 浏览器最新版本 71.0.3578.98(正式版本) (64 位)

    Google Chrome 浏览器 最新版本 71.0.3578.98(正式版本) (64 位) 链接地址:https://share.weiyun.com/5uX1wRc 转载于:https://w ...

最新文章

  1. python3打开文件的代码_Python3 对文件操作
  2. [ACM_几何] Pipe
  3. 深度学习半自动标注_图像识别中标注工具labelImg的安装和使用——深度学习打标签...
  4. 深度学习与神经网络关系(BP网络【浅层】与深层网络)
  5. AtCoder AGC007E Shik and Travel (二分、DP、启发式合并)
  6. 【JavaScript】JS事件机制学习
  7. c语言 pow优化_c程序代码优化的一些方法
  8. android自动画线,Android画布画线 - 使线条变粗
  9. ionic 返回上一页,并刷新父页面
  10. JVisualVM监控
  11. 数据库锁,事务特性,脏读,幻读,不可重复度,隔离级别,分布式事务,本地事务的介绍
  12. POC_若依管理系统
  13. Unity Decal 贴花效果测试
  14. ASP.NET复习资料
  15. 电影推荐之《哈利波特与阿兹卡班的囚徒》 隐私策略(Privacy policy)
  16. Unity中的矩阵Matrix
  17. Hive on Hbase
  18. js给html设置背景音乐,最简单最快的方法给H5页面添加背景音乐播放(css样式美化)...
  19. @5-1 CCF 2019-12-1 报数
  20. 培训演讲的小技巧,你知道多少?

热门文章

  1. javascript中数组遍历问题
  2. How do I filtered TextBox with an Integer Data Type
  3. 创业者都认为经营一家新公司最主要的目标是融资
  4. 【java】 jsp网页表单数据跨页面传递
  5. 分类数据转换为树形结构
  6. JavaScript之全局函数详解
  7. 笔记.cloudflare 的橙色云代理ssl坑
  8. 使用eventfd唤醒阻塞在select、poll、epoll的IO复用
  9. C++17 部分实用特性
  10. Jdk1.8日期格式转换小笔记