TP5与TP3.X对比
首先声明本章节并非是指导升级旧的项目到5.0
,而是为了使用3.X
版本的开发者更快的熟悉并上手这个全新的版本。同时也强烈建议开发者抛弃之前旧的思维模式,因为5.0
是一个全新的颠覆重构版本。
需要摒弃的3.X旧思想
URL的变动
首先对3.X的不严谨给开发者们带来的不正确的引导表示歉意,在5.0版本正式废除类似/id/1方式 可以通过‘get’获取到‘id’的方法,严格来讲这样的url是不属于$_GET的,现在可以通过‘param’获取,具体使用可以通过请求部分查询。
模型的变动
新版的模型查询返回默认‘对象’,系统默认增加了'toArray'方法,许多开发者在'all'或'select'尝试使用'toArray'来 转换为数组,在此希望开发者能理解‘对象’的概念,尝试使用‘对象’进行数据的使用,或者使用'db'方法进行数据库的操作,也提醒一下部分‘滥 用’'toArray'的开发者,'all'或'select'结果是对象的数组集合,是无法使用'toArray'进行转换的。
新版变化
命名规范
- 目录和文件名采用‘小写+下划线’,并且以小写字母开头;
- 类库、函数文件统一以.php为后缀;
- 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致(包括大小写);
- 类名和类文件名保持一致,并统一采用驼峰法命名(首字母大写)
函数
- 系统已经不依赖任何函数,只是对常用的操作封装提供了助手函数;
- 单字母函数废弃,默认系统加载助手函数,具体参考上一个章节‘助手函数’;
路由
5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规则(正则定义)的方式,具体这里不再赘述。
控制器
控制器的命名空间有所调整,并且可以无需继承任何的控制器类。
- 应用类库的命名空间统一为app(可修改)而不是模块名;
- 控制器的类名默认不带
Controller
后缀,可以配置开启controller_suffix
参数启用控制器类后缀; - 控制器操作方法采用
return
方式返回数据,而非直接输出; - 废除原来的操作前后置方法;
版本对比
3.2版本控制器写法
<?php
namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello() { echo 'hello,thinkphp!'; } }
5.0版本控制器写法
namespace app\index\controller;class Index { public function index() { return 'hello,thinkphp!'; } }
3.2版本控制器命名
IndexController.class.php
5.0版本控制器命名
Index.php
**在控制器中正确的输出模板**
5.0在控制器中输出模板,使用方法如下:
如果你继承think\Controller
的话,可以使用:
return $this->fetch('index/hello');
如果你的控制器没有继承 think\Controller
的话,使用:
return view('index/hello');
模型
如果非要对比与旧版本的改进,模型被分为数据库、模型、验证器三部分,分别对应M方法、模型、自动验证,同时均有所加强,下面做简单介绍。
数据库
5.0的数据库查询功能增强,原先需要通过模型才能使用的链式查询可以直接通过Db类调用,原来的M函数调用可以改用db函数,例如:
3.2版本
M('User')->where(['name'=>'thinkphp'])->find();
5.0版本
db('User')->where('name','thinkphp')->find();
模型
新版的模型查询增加了静态方法,例如:
User::get(1); User::all(); User::where('id','>',10)->find();
模型部分增强了很多功能,具体请查阅“模型章节”。
自动验证
对比旧的版本,可以理解为之前的自动验证且不同于之前的验证;
ThinkPHP5.0验证使用独立的\think\Validate
类或者验证器进行验证,不仅适用于模型,在控制器也可直接调用,具体使用规则请参考“验证”章节,这里不再赘述。
配置文件
新版对配置很多的配置参数或者配置层次都和之前不同了,建议大家要么看看代码,要么仔细通读下官方的开发手册,不要因为配置的问题浪费自己一整天的时间。
异常
5.0对错误零容忍,默认情况下会对任何级别的错误抛出异常,并且重新设计了异常页面,展示了详尽的错误信息,便于调试。
系统常量的废弃
5.0版本相对于之前版本对系统变化进行了大量的废弃,用户如果有相关需求可以自行定义
下面是废除常量
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等
部分常量可以在Request里面进行获取,具体参考“请求章节”。
注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。
助手函数
5.0
助手函数和3.2
版本的单字母函数对比如下:
转载于:https://www.cnblogs.com/zhaohui123/p/7298304.html
TP5与TP3.X对比相关推荐
- ThinkPHP3.2/ThinkPHP5对比
TP5与TP3.X对比 首先声明本章节并非是指导升级旧的项目到5.0,而是为了使用3.X版本的开发者更快的熟悉并上手这个全新的版本.同时也强烈建议开发者抛弃之前旧的思维模式,因为5.0是一个全新的颠覆 ...
- 程序员的知识问题,仅供参考
互怼提问 – 架构优化 1. 主从复制的原理是什么?主从复制中断了怎么办?主从复制出现延迟怎么处理?主库崩溃了怎么办?Mha 原理: 原理:主从复制一共有三个进程,从库生成两个线程,一个I/O线程 ...
- PHP面试问题总结整理
主从复制的原理是什么?主从复制中断了怎么办?主从复制出现延迟怎么处理?主库崩溃了怎么办? 原理: 原理:主从复制一共有三个进程,从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 ...
- 5和6的区别 thinkphp_Thinkphp5和Thinkphp3的区别,如何学好thinkphp
我主要讲解 tp5 和 tp3 的一些区别,如下 一.控制器 1.tp5 控制器的类名默认不携带了 Controller 后缀,tp3 需要携带 Controller 后缀 2.tp5 控制器的方法中 ...
- tp3.x和tp5.0的区别
助手函数 5.0助手函数和3.2版本的单字母函数对比如下: 3.2版本 5.0版本 C config E exception G debug L lang T 废除 I input N 废除 D mo ...
- tp3与tp5的区别
前言 不论是学习使用tp3/tp5还是面试,我们经常都会提到thinkPHP3和thinkPHP5的一些区别有哪些,下面我对这两者的一些区别做了一些总结(表面的区别,并不涉及内核) 1. 控制器输入函 ...
- php tp3.0计算每天的订单,TP5.1结合taskphp3.0定时任务
1.第一步,安装最新的taskPHP composer require taskphp/taskphp dev-master 2.第二步, 配置TP5项目的 application/command.p ...
- TP3.2.3到TP5的变化
1. 字母函数的失效,可以移到放在common.php这个文件,对于I方法可以用助手函数input以及U方法可以用url方法来进行替换 2. 配置项里面对于模板常量的定义要进行Request的引用 3 ...
- thinkphp|tp3|tp5出现pathinfo不能访问,404的情况解决
基本情况: 环境: 1.win10系统: 2.apache2.4.18/php5.6: 3.测试了thinkphp3.2.3+thinkphp5.0.15: 4.phpstorm 2016.1. ...
最新文章
- Using --强制资源清理
- ORACLE审计初步入门
- 【机器学习】一文解读时间序列基本概念
- Reactive Cocoa实践举例
- mfcc中的fft操作_简化音频数据:FFT,STFT和MFCC
- Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践
- vnpy学习_03学习推荐
- nginx配置注意事项1
- dell服务器运维,施用smartctl查dell服务器坏道实录
- 以下选项不是python文本处理方向第三方库_Python程序设计-超星尔雅-学习通-题库零氪...
- C#使用欧姆龙PLC的Fins协议读写PLC地址(基本封装)
- 积分极限定理+勒贝格控制收敛定理+高数
- php 两张图片 合并 扣,php图片合成方法(多张图片合成一张)
- halcon模板匹配快速入门
- DEL: 华为无线modem变无线路由器
- 计算机科学丛书20周年——20本跨世经典 夯筑科技基石
- Dfinity (ICP)开发基本操作-4
- Windows Debug 详解
- 大学计算机应用b,西安理工大学《大学计算机应用》试题 B卷
- SCAU 数据结构 1 单链表分解
热门文章
- 小打卡基于阿里云构建企业级数仓的实践及总结
- JAVA技术周刊第一期:关于JVM你了解多少?看这篇文章就够了!
- 开放下载!《阿里云存储白皮书》全面解读阿里云存储二十年的技术演进
- nginx可以负载均衡多个tomcat,nginx主机挂了怎么办?Keepalived
- 用科幻艺术描绘未知的魅力-环境篇
- 面对一夜狼人杀特殊的游戏机制,取得胜利很难吗?还可以
- 软件技术专业-就业提示(三、Java工程师必备技能)
- RAC环境在ASM上创建表空间出错ORA-569
- OCM备考 三. Managing Database Availability 之RMAN日常操作
- 一位软件实施工程师的自述