1.控制器输出

return $this->fetch("index/hello");

$this->display

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

官方说明地址:http://www.kancloud.cn/thinkphp/thinkphp5_quickstart/145260

为啥单字母函数去掉了?

单字母函数是TP历史上争议较大的问题,应该说单字母函数的诞生是有历史原因的,但已经到了退出历史舞台的时候了,可能很多人习惯了单字母函数带来的便捷(虽然同时我们也饱受着某些学院用户的抱怨)。

基于几个原因废除了单字母函数:
(1)5.0 核心已经不依赖任何函数 只是对常用的操作封装提供了助手函数
(2)助手函数是可以完全自己定义和修改,并不影响其他的使用 
(3)现在的IDE提示和自动完成功能已经非常强大了,所以用不用助手函数,或者是否需要改成原来的单字母函数,全凭开发者个人意愿。

核心框架不依赖任何助手函数,系统只是默认加载了助手函数,配置如下:

// 扩展函数文件定义 'extra_file_list' => [THINK_PATH . 'helper' . EXT],

因此,你可以随意修改助手函数的名称或者添加自己的助手函数,然后修改配置为:

// 扩展函数文件定义 'extra_file_list' =>  [ APP_PATH . 'helper' . EXT],

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');

3.为什么不能识别驼峰命名的控制器5.0版本默认情况下不区分URL的大小写,也就是说URL里面的控制器和操作都会强制转小写然后去定位控制器类,因此

http://serverName/index/UserType/addType

// 和下面的访问是等效的

http://serverName/index/usertype/addtype

如果需要访问驼峰命名法的UserType控制器,有两种方式

一、使用下面的URL地址访问

http://serverName/index/user_type/addtype

二、配置url_convert参数,关闭URL强制转换

// 关闭自动转换

'url_convert' => false,

4.TP5版本的模板标签界定符由原来id<>更改为{}

<volist name="lsit" id="vo">

{$vo.id}:{$vo.name}

</volist>

改为

{volist name="list" id="vo"}

{$vo.id}:{$vo.name}

{/volist}

5.控制器的类名默认不带Controller后缀 模型类的后缀不带Model

6.3.2版本和5版本 数据库写法不一样

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

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

7. 模型3.2和5版本区别

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

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

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

MODULE_NAME

CONTROLLER_NAME

ACTION_NAME

APP_NAMESPACE

APP_DEBUG MODULE_PATH

TP5和TP3.2的区别的更多相关文章

  1. TP5和TP3.2的使用区别

    模板标签不一样: TP5 可在配置文件中自行定义自己喜欢的标签 TP5  使用双标签 如:{foreach} {/foreach} TP3 : <> TP5 :{} 调用数据表方式: M( ...

  2. tp5.0和tp3.2的区别

    1. 控制器输出return $this->fetch(); ----5$this->display(); ----3.2 单字母函数去掉了 如:M() D() U() S() C() 3 ...

  3. TP5与TP3.X对比

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

  4. TP5 belongsTo 和 hasOne的区别

    hasOne和belongsTo这两种方法都可以应用在一对一关联上,但是他们也是有区别的: belongsTo: 从属关系:就是谁为主的问题 A:{id,name,sex} B:{id,name.A_ ...

  5. tp5 修改自带success或error跳转模板页面

    tp5 修改自带success或error跳转模板页面 我们在使用tp5或者tp3.2的时候,用的成功或者失败跳转提示页面一般是用框架的.在后续开发过程中,根据实际项目需要,也是可以更改的,在此分享一 ...

  6. TP5 多条件whereOr查询

    问题背景:最近在用ThinkPHP 5开发项目的过程中,发现根据筛选条件做or查询的时候,连贯操作不可以使用where进行条件查询了. 首先列出一个user数据表的信息: uid uname grad ...

  7. mysql安装使用笔记

    mysql2008年被sun公司10亿美元收购, 后sun被oracle收购. widenius : 维德纽斯重新写的mysql的分支 mariaDB. 白发程序员, 是由 瑞典mysql AB公司开 ...

  8. php开发面试题---lavarel和tp的区别是什么(呕心整理)

    php开发面试题---lavarel和tp的区别是什么(呕心整理) 一.总结 一句话总结: 反思的回顾非常有用,因为决定了我的方向和技巧 以战养己,这是非常非常好的方式 主要从大小.功能.安全性.操作 ...

  9. ThinkPHP5 使用create 获取表单所有字段

    TP5没有 TP3的那个create创建表单字段,如果字段太多,写起来是非常麻烦 只需要在 框架里面 think/db/Query.php 里面加上函数 public function create( ...

随机推荐

  1. asp.net 简单记录请求的客户端和服务端 处理时间

    最近项目需要简单记录一下 ajax客户端和服务端处理时间,服务端时间的思路是借用BeginRequest和EndRequest事件,为了不影响现有接口返回的数据格式,因此服务处理时间放在respons ...

  2. OpenWrt 18.06.1的ss-redir, 以及在乐视超4 X40上看Youtube

    在18.06里面要设个透明代理, 就一直不成功 各种TIME OUT, PRIVATE SSL ERROR, 换回旧版的luci-app-shadowsocks也不行. 我就一直想, 到底这东西还能有 ...

  3. Swift udp实现根据端口号监听广播数据(利用GCDAsyncUdpSocket实现)

    有个小需求,app需要监听pc广播的数据: 代码实现思路: 使用三方库:CocoaAsyncSocket 1.开启udp监听: udpSocket.beginReceiving() 2.读取udp的数 ...

  4. dup2替换

    今天看APUE上一道题,要求不能用fcnt1来替换dup1. 刚开始的思路是dup一个,测试发现与期望的不一致就马上关闭,发现遇到无限循环,刚才想了下,才发现一旦close掉,再次dup仍然是分配最小 ...

  5. SNF快速开发平台--规则引擎介绍和使用文档

    设计目标: a) 规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b) 能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c) 运算速度 ...

  6. 一篇文章掌握RequireJS常用知识

    本文采取循序渐进的方式,从理论到实践,从RequireJS官方API文档中,总结出在使用RequireJS过程中最常用的一些用法,并对文档中不够清晰具体的内容,加以例证和分析,分享给大家供大家参考,具 ...

  7. C#读取CSV

    public class CSVFileHelper { /// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// ...

  8. c++对c的加强

    1.register关键字的加强 register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度,这只是一种请求,编译器可以拒绝这种申请. ( ...

  9. 【iCore1S 双核心板_FPGA】例程十五:基于I2C的ARM与FPGA通信实验

    实验现象: 核心代码: int main(void) { int i,n; ]; ]; HAL_Init(); system_clock.initialize(); led.initialize(); ...

  10. 截图工具(window 10 和Mac OSX)

      Win10上截图 1.使用系统截图工具 所有程序中可以看到 通过win+R,打开运行,输入"SnippingTool" 文件位于: C:\Windows\System32\Sn ...