• 技术文章 >php框架 >ThinkPHP

    thinkphp3.2与5.0的区别有哪些

    青灯夜游青灯夜游2022-02-14 17:41:58原创821

    区别:1、3.2支持普通URL模式和正则路由定义,而5.0不支持;2、5.0新增了请求对象Request和响应对象Response;3、5.0对错误零容忍,3.2不是;4、5.0版本废弃了原来的大部分常量定义,仅仅保留了框架的路径常量定义。

    php入门到就业线上直播课:进入学习

    本教程操作环境:Windows7系统、thinkphp v5.0版、Dell G3电脑。

    thinkphp5.0 与thinkphp 3.2的区别

    5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别。

    URL和路由

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

    主要改进如下;

    请求对象和响应对象

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

    模块和控制器

    控制器的命名空间有所调整,并且可以无需继承任何的控制器类。

    数据库

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

    3.2版本

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

    5.0版本

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

    主要改进如下:

    模型

    5.0的模型变化是最大的,基本上模型是完全面向对象的概念,包括关联模型,模型类的后缀不再带Model,直接由命名空间区分,原来的D函数调用改为model函数,并且必须创建对应的模型类,例如:

    3.2版本

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

    5.0版本

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

    主要改进包括:

    自动验证和自动完成

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

    【相关教程推荐:thinkphp框架

    以上就是thinkphp3.2与5.0的区别有哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    ThinkPHP6基础与实战:点击学习

    课程从基础到实战详细分析讲解

    专题推荐:thinkphp
    上一篇:thinkphp是什么模式 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• thinkphp怎样去除html标签• 聊聊THINKPHP调试模式及异常处理• 记一个ThinkPHP框架的渗透实战• 详解thinkphp下部分内容的ajax无刷新分页• ThinkPHP5框架中Redis是如何使用和封装?• ThinkPhp5.1制作微信支付以及支付后的几种状态说明
    1/1

    PHP中文网