当前位置:首页 > 生活百科

thinkphp最新版本是什么,thinkphp开发工具及搭建教程

栏目:生活百科日期:2025-05-21浏览:0

点击右上方,关注开源中国OSC头条号,获取最新技术资讯

5.2在经过几个月的测试版本迭代后,正式进入候选版本。之后的重点工作会是扩展以及文档的完善。当然,不排除核心还有微调的可能。

ThinkPHP5.2RC1版本继上个版本beta3版本发布以来,主要更新如下:

新特性

支持FIND_IN_SET查询

增加了新的查询表达式对FIND_IN_SET的支持,使用下面的查询即可:

Db::name('user')-&>where('group_list', 'find in set', 2)-&>select();

增加了分区查询支持

增加了对分区的支持(需要MySQL5.6+版本),例如你对user表分了p1和p2两个分区,你可以使用下面的查询:

Db::name('user')-&>partition('p1')-&>insert(['name' =&> 'think']);
Db::name('user')-&>partition(['p1', 'p2'])-&>select();
Db::name('user')-&>partition(['p1', 'p2'])-&>where('name', 'think')-&>update(['name' =&> 'thinkphp']);
Db::name('user')-&>partition('p1')-&>where('name', 'think')-&>delete();

增加了ON DUPLICATE UPDATE支持

支持ON DUPLICATE UPDATE,例如:

Db::name('user')-&>duplicate(['score' =&> 10])-&>insert(['name' =&> 'think']);

增加extra方法设置查询额外参数

extra方法可以用于CURD查询,例如:

Db::name('user')-&>extra('IGNORE')-&>insert(['name' =&> 'think']);
Db::name('user')-&>extra('DELAYED')-&>insert(['name' =&> 'think']);
Db::name('user')-&>extra('SQL_BUFFER_RESULT')-&>select();

新增单个数据改为使用更清晰和高效的INSERT SET语法,例如下面的查询

Db::name('user')-&>insert(['name' =&> 'think', 'score' =&> 100]);

实际生成的SQL语句是

INSERT INTO user SET `name` = 'think', `score` = 100

增加whereFieldRaw查询方法

该方法用于对字段使用SQL函数查询,例如:

User::whereFieldRaw('date_format("create_time", "%Y")', '2019')-&>select();
User::whereFieldRaw('date_format("create_time", "%Y")', '&>', '2018')-&>select();

Query类的update方法支持获取模型的更新条件

现在可以直接使用模型的查询条件作为Db类update方法的数据更新条件,例如:

$user = User::find(1);
$user-&>field(['name'])-&>update(['name' =&> 'thinkphp']);

数据集类增加快捷查询(过滤)方法

thinkCollection类增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法,用于更方便的进行数据筛选而替代使用不够直观的where方法。

增加optimize:facade指令

可以在本地开发的时候使用该指令为Facade类生成对应类的方法注释。你只需要在定义Facade类的时候,在类的注释中添加 @mixin 选项,例如使用@mixin thinkDb注释后,使用optimize:facade指令后,就会在类的注释中自动生成thinkDb类的相关public方法注释,方便IDE自动提示,每个类的方法返回值类型最好明确指定(没有返回值的则使用void),否则注释中会使用mixed返回类型。

增加新的表达式查询解析扩展

增加了新的thinkdbExpression类(原来的Expression类已经更改为Raw类)用于查询表达式的扩展解析,你只需要自定义一个表达式解析类,例如:

&<?php
namespace appcommonexpression;
use thinkdbExpression;
class Rlike extends Expression
{
/**
* 分析查询表达式
*
* @param Query $query 查询对象
* @param string $key
* @param string $exp
* @param string $field
* @param integer $bindType
* @return string
*/
public function parse(Query $query, string $key, string $exp, string $field, int $bindType): string
{
if ($this-&>value instanceof Raw) {
$value = $this-&>value-&>getValue();
} else {
$value = $this-&>value;
}

return $key .' RLIKE ' . $value ;
}
}

现在我们就可以使用下面的查询语法了:

User::where('name', 'rlike', new appcommonexpressionRlike('^think'))-&>select();

提供了关闭事件机制的方法

如果你完全不需要使用事件机制,可以在入口文件中使用withEvent方法关闭事件功能。

(new App())-&>withEvent(false)-&>run()-&>send();

不过值得提醒的是,新版的路由功能、多语言支持和请求缓存功能都是利用了事件机制响应的。

用法调整

原来Query类的raw方法移动到Db类

虽然用法上没有改变,但Db::raw()方法的调用效率会更高一些。或者你可以直接使用新的助手函数raw替代Db::raw。

原来的Expression类改为Raw类

原来的thinkdbExpression类更改为thinkdbRaw类,更加贴切。

多对多关联的pivotDataName方法更名为name方法

使用更加简洁的name方法替代原来的pivotDataName方法。

废弃用法和参数

取消Query类的extend方法

取消了Query类的extend方法,如果需要扩展查询方法,建议自定义Query类并继承系统的thinkdbQuery类即可,然后在模型中定义query属性或者配置数据库连接的query参数为你的自定义类。

取消Request类的hook方法

由于不建议扩展Request类的方法,该方法已经在最新版本中取消。

取消URL参数模式配置

原来的URL参数模式配置参数url_param_type,统一使用参数/值的方式。

更新日志

改进Url类build方法修复获取当前页码数据类型修正parseKey方法传入数值的情况改进optimize:config指令对declare申明的支持取消URL参数模式配置增加optimize:facade指令用于生成facade类的方法注释取消Query类的extend方法原来的Expression类更改为Raw类增加新的Expression类用于表达式查询扩展Collection类增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法Query类的raw方法移动到Db类取消Request类的hook方法修正Route::view方法优化模型获取器方法多对多关联的pivotDataName方法更名为name方法Query类增加partition/duplicate/extra方法改进mysql驱动支持分区和duplicate以及额外参数mysql驱动的insert方法改用更清晰的insert set语法修正Event类bind属性定义修正验证类的append一处bug改进Query类update方法支持读取模型的更新条件取消模型类的getUpdateWhere方法统一使用getWhere方法改进query类的fetchArray方法处理改进路由类取消app属性增加thinkfacadeRuleName类增加whereFieldRaw查询方法改进自动多应用名称获取App类增加withEvent方法支持关闭事件机制改进Dispatch类对var_dump的支持改进hasMany的withCount自关联修正纯数字检测参数类型转换问题修正raw助手函数mysql支持find_in_set查询改进url方法对自动多应用的支持

“thinkphp最新版本是什么,thinkphp开发工具及搭建教程” 的相关文章

二次元文化大行其道,资本再次聚焦动漫行业。

二次元文化大行其道,资本再次聚焦动漫行业。8月23日,中国最大国漫平台快看APP对外宣布完成了最新一轮融资,融资金额2.4亿美元。本轮融资由建银国际、OneSt...

什么小型加工厂赚钱,一万元小型加工厂项目

现在很多人选择自己创业而不是为别人打工,而小成本创业也成了大家钟爱的,那么在村里可开啥小型加工厂?接下来,听听专家说的几种小工厂,只赚不赔的生意:一、投资两万的...

去手机店买手机的技巧2020(实体店购机巧避4个潜规则)

对于年轻人而言,“网购”几乎已经是生活中不可或缺的一部分,尤其是在互联网电商空前发展的今天,网购数码产品也成了众多年轻人的选择。不过即便如此,线下市场仍是手机产...

3个无成本网赚方法(做的好在家照样月入上万)

生活节奏越来越快,网络兼职是大势所趋.普通的网赚很多,下边给大家列几个常见的.一、头条爆料.点击头条APP头像,会显示一个爆料,点开后即可.爆料规则如下,一般情...

京东618购物节优惠大吗,2020京东618活动规则

近日,京东对外发布了《2020年京东开放平台618活动总则》,宣称今年京东618将投入巨量资源,通过电商直播、头号京贴等创新玩法,资金、物流等支持补贴,高效防范...

mac系统命令行终端快捷键(mac打开命令行终端)

1.导言Mac里面的快捷键可以说是数不胜数了,想要把它全部记录下来怕不是件容易的事,我们脑子记不住,可以找一个工具来帮我们记录呀,像AppStore里面的键指如...

华为mate20是双卡双待吗(详细介绍华为mate20手机)

华为今晚(10月16日)发布全新旗舰Mate20系列,一共有4款:mate20、mate20pro、mate20保时捷设计、mate20x。发布会持续了大概10...

sketch文件转psd文件怎么转(两种文件转换方式步骤图)

看到后台一直有同学给我们留言,询问我们这档栏目是不是停更了?咋肥事呢,小老弟我们才出了3期,停更是不可能的,看心情更新到是很有可能,但是一旦更新了,说的就是通俗...

华为7寸手机哪款好(7寸以上大屏手机排行)

为带给消费者更好的视觉体验,如今,智能手机的屏幕正在往越来越大的方向发展。目前6.5英寸的大屏机型已经不少见。但是,7英寸左右的屏幕如今还是相当稀有,还是一个市...

u盘删除的文件如何恢复,教你一招轻松搞定

好友因为把U盘数据弄丢了变得很暴躁,其实数据丢失是常有的事情,这件事的重要性取决于数据的重要性。如果不是什么特别重要的数据,丢了也就丢了,糟糕的就是重要的数据丢...