TP3.2与TP5.0的区别

1. 控制器输出
return $this->fetch(); ----5
$this->display(); ----3.2

单字母函数去掉了 如:M() D() U() S() C()

3.2 ---------5
G() ---------  debug() 记录时间(微秒)和内存使用情况
E() ---------  exception() 抛出异常处理
C() ---------  config() 获取和设置配置参数
I() ---------  input() 获取输入数据,支持默认值和过滤
W() ---------  widget() 染输出Widget
D() ---------  model() 实例化Model
S() ---------  cache() 缓存管理
U() ---------  url() Url生成

2. 原来3.2版本的模型的getField方法应该如何使用?
原先模型类的getField方法,在5.0的数据库Query类中拆分两个方法,一个value方法用于查询某个行的某个值和一个column方法用于查询某个列的值,用法如下:
查询某个字段的值可以用
//返回某个字段的值
Db::table(‘think_user‘)->where(‘id‘, 1)->value(‘name‘);

原来的举个查询方法依然有效
Db::table(‘think_user‘)->count();
Db::table(‘think_user‘)->max(‘score‘);

查询某一列的值
//返回数组
Db::table(‘think_user‘)->where(‘status‘, 1)->column(‘name‘);
//指定id字段作为索引
Db::table(‘think_user‘)->where(‘status‘, 1)->column(‘name‘,‘id‘);

3.为什么不能识别驼峰法命名的控制器,5.0版本默认情况下不区分URL的大小写,也就是说URL里面的控制器和操作都会强制转小写然后去定位控制器类,因此
http://serverName/index/UserType/addType
//和下面的访问是等效的
http://serverName/index/usertype/addtype

如果需要访问驼峰法命名的UserType控制器,有两种方式
(1).使用下面的URL地址访问
http://serverName/index/user_type/addtype
(2).配置url_convert参数,关闭URL强制转换
//关闭自动转换
‘url_convert‘ => false,

4. tp5版本的模板标签界定符由原来的<>更改为{}
<volist name="list" id="val">
{$val.id}:{$val.name}
</volist>
改为:
{volist name="list" id="val"}
{$val.id}:{$val.name}
{/volist}

5. 控制器的类名默认不带Controller后缀  模型类的后缀不再带Model
6. 3.2版本和5版本 数据库写法不一样
M(‘User‘)->where([‘name‘ => ‘think‘])->find();  ----3.2
db(‘User‘)->where([‘name‘ => ‘think‘])->find();  ----5

7. 模型区别
D(‘User‘)->where([‘name‘ => ‘think‘])->find();  ----3.2
model(‘User‘)->where([‘name‘ => ‘think‘])->find();  ----5

8. 请求对象和响应对象
5.0新增请求对象Request和响应对象Response, Request统一处理请求和获取请求信息,Response对象负责输出酷虎的或者浏览器响应

9. 常量简化
5.0版本废弃了原来的大部分常量定义,仅仅保留了框架的路径常量定义,其余的常量可以使用App类获取Request类相关属性获取方法来完成,或者自己重新定义需要的常量
REQUEST_METHOD
IS_GET
IS_POST
IS_PUT
IS_DELETE
IS_AJAX
__EXT__
COMMON_MODULE
CONTROLLER_NAME
ACTION_NAME
APP_NAMESPACE
APP_DEBUG 
MODULE_PATH

原文地址:https://www.cnblogs.com/zhq--blog/p/9192006.html

时间: 2024-10-04 17:47:29

TP3.2与TP5.0的区别的相关文章

tp3.x和tp 5的区别

由于TP5.0是一个全新的颠覆重构版本,所以现在面试很多面试官喜欢问TP3.2和TP5之间的区别,那他们之间到底有哪些区别呢?一.目录  TP5目录 二.需要摒弃的 3.X 旧思想 模型的变动       新版的模型查询返回默认'对象',系统默认增加了'toArray'方法,许多开发者在'all'或'select'尝试使用'toArray'来 转换为数组,但是'all'或'select'结果是对象的数组集合,是无法使用'toArray'进行转换的,如果你强行使用foreach进行转换,后期会增加

border:none;与border:0;的区别

这问题在网络相信已经有不少人问到,最近再次被牵起讨论,籍此记录一下个人的理解,border:none;与border:0;的区别体现有两点: 一是理论上的性能差异二是浏览器兼容性的差异.1.性能差异 [border:0;]把border设为"0"像素虽然在页面上看不见,但按border默认值理解, 浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值. [border:none;]把border设为"none"即没有,浏览器解

android finish和system.exit(0)的区别

finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理:当调用System.exit(0)时,杀死了整个进程, 这时候活动所占的资源也会被释放. 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果. 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动

href=#与href=javascriptvoid(0)的区别

#"包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0)  仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首 而javascript:void(0) 则不是如此 所以调用脚本的时候最好用void(0) 或者<input onclick> <div onclick>等 打开新窗口链接的几种办法 1.window.open('url') 2.用自定义函数 <script>       

【转载】C/C++杂记:NULL与0的区别、nullptr的来历

原文:C/C++杂记:NULL与0的区别.nullptr的来历 某些时候,我们需要将指针赋值为空指针,以防止野指针. 有人喜欢使用NULL作为空指针常量使用,例如:int* p = NULL;. 也有人直接使用0值作为空指针常量,例如:int* p = 0;. 前者可能觉得:NULL作为空指针常量,名字很形象,可读性较强. 后者可能觉得:NULL并不是C/C++语言的关键字,而是一个在标准库头文件<stddef.h>中定义的宏,因此要使用NULL,可能需要直接或简介地包含<stddef.

C/C++语言中NULL、&#39;\0’和0的区别

注:本文参考了http://blog.csdn.net/mylinx/article/details/6873253及书籍<征服C指针>([日]前桥和弥著). NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* Define NULL pointer value */ 2 #ifndef NULL 3 #ifdef __cplusplus 4 #d

tp5.0 学习(一):虚拟环境安装

一.文件目录: application: 应用目录,开发文件存放地 extend:扩展 public:入口文件 thinkphp:核心代码 vendor:第三方类库 二.域名Apache配置 ①C:\windows\system32\drivers\etc\hosts 127.0.0.1 www.xxx..com ②找到apache 的httpd.conf文件 phpstudy 是在phpstudy\Apache\conf\httpd.conf 安装phpStudy下载,傻瓜式安装很简单,一直点

href=&quot;#&quot;和javasrcript:void(0)的区别

当我们需要一个空链接时,通常有两种方法: <a href="#">这个一个空链接</a> 和 <a href="javascript:void(0)">这是另一个空链接</a> href="#" #之后跟着锚记名称,点击后跳转到页面指定位置:没有跟锚记名称则默认跳转到页面顶部 href="javascript:void(0)" void是一个操作符,这个操作符指定要计算一个表达式

lr中exit(-1)和return 0的区别

LR脚本实践:关于lr中exit(-1)和return 0的区别 exit(-1):从当前action里面exit(-1)所在行,当前迭代里面直接退出来,终止运行: return 0:忽略当前action里面return 0后面的脚本,直接运行下一个action,以及下一个迭代: 比如做了个测试: Action6() { int count = 0; if (count ==0) { lr_output_message("%d",count); exit(-1); } lr_outpu