首先声明本章节并非是指导升级旧的项目到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对比相关推荐

  1. ThinkPHP3.2/ThinkPHP5对比

    TP5与TP3.X对比 首先声明本章节并非是指导升级旧的项目到5.0,而是为了使用3.X版本的开发者更快的熟悉并上手这个全新的版本.同时也强烈建议开发者抛弃之前旧的思维模式,因为5.0是一个全新的颠覆 ...

  2. 程序员的知识问题,仅供参考

    互怼提问 – 架构优化   1. 主从复制的原理是什么?主从复制中断了怎么办?主从复制出现延迟怎么处理?主库崩溃了怎么办?Mha 原理: 原理:主从复制一共有三个进程,从库生成两个线程,一个I/O线程 ...

  3. PHP面试问题总结整理

    主从复制的原理是什么?主从复制中断了怎么办?主从复制出现延迟怎么处理?主库崩溃了怎么办? 原理: 原理:主从复制一共有三个进程,从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 ...

  4. 5和6的区别 thinkphp_Thinkphp5和Thinkphp3的区别,如何学好thinkphp

    我主要讲解 tp5 和 tp3 的一些区别,如下 一.控制器 1.tp5 控制器的类名默认不携带了 Controller 后缀,tp3 需要携带 Controller 后缀 2.tp5 控制器的方法中 ...

  5. 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 ...

  6. tp3与tp5的区别

    前言 不论是学习使用tp3/tp5还是面试,我们经常都会提到thinkPHP3和thinkPHP5的一些区别有哪些,下面我对这两者的一些区别做了一些总结(表面的区别,并不涉及内核) 1. 控制器输入函 ...

  7. php tp3.0计算每天的订单,TP5.1结合taskphp3.0定时任务

    1.第一步,安装最新的taskPHP composer require taskphp/taskphp dev-master 2.第二步, 配置TP5项目的 application/command.p ...

  8. TP3.2.3到TP5的变化

    1. 字母函数的失效,可以移到放在common.php这个文件,对于I方法可以用助手函数input以及U方法可以用url方法来进行替换 2. 配置项里面对于模板常量的定义要进行Request的引用 3 ...

  9. thinkphp|tp3|tp5出现pathinfo不能访问,404的情况解决

    基本情况: 环境: 1.win10系统: 2.apache2.4.18/php5.6: 3.测试了thinkphp3.2.3+thinkphp5.0.15: 4.phpstorm 2016.1.   ...

最新文章

  1. Using --强制资源清理
  2. ORACLE审计初步入门
  3. 【机器学习】一文解读时间序列基本概念
  4. Reactive Cocoa实践举例
  5. mfcc中的fft操作_简化音频数据:FFT,STFT和MFCC
  6. Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践
  7. vnpy学习_03学习推荐
  8. nginx配置注意事项1
  9. dell服务器运维,施用smartctl查dell服务器坏道实录
  10. 以下选项不是python文本处理方向第三方库_Python程序设计-超星尔雅-学习通-题库零氪...
  11. C#使用欧姆龙PLC的Fins协议读写PLC地址(基本封装)
  12. 积分极限定理+勒贝格控制收敛定理+高数
  13. php 两张图片 合并 扣,php图片合成方法(多张图片合成一张)
  14. halcon模板匹配快速入门
  15. DEL: 华为无线modem变无线路由器
  16. 计算机科学丛书20周年——20本跨世经典 夯筑科技基石
  17. Dfinity (ICP)开发基本操作-4
  18. Windows Debug 详解
  19. 大学计算机应用b,西安理工大学《大学计算机应用》试题 B卷
  20. SCAU 数据结构 1 单链表分解

热门文章

  1. 小打卡基于阿里云构建企业级数仓的实践及总结
  2. JAVA技术周刊第一期:关于JVM你了解多少?看这篇文章就够了!
  3. 开放下载!《阿里云存储白皮书》全面解读阿里云存储二十年的技术演进
  4. nginx可以负载均衡多个tomcat,nginx主机挂了怎么办?Keepalived
  5. 用科幻艺术描绘未知的魅力-环境篇
  6. 面对一夜狼人杀特殊的游戏机制,取得胜利很难吗?还可以
  7. 软件技术专业-就业提示(三、Java工程师必备技能)
  8. RAC环境在ASM上创建表空间出错ORA-569
  9. OCM备考 三. Managing Database Availability 之RMAN日常操作
  10. 一位软件实施工程师的自述