Releases: top-think/think
Releases · top-think/think
V5.1.38
本次更新为常规更新,主要包括:
Request
类增加isJson
方法- 改进浮点型查询
- 修正关联查询关联外键为空的查询错误
- 远程一对多支持关联统计和预载入查询
- 远程一对多关联支持
has
/hasWhere
查询 - 优化
parseIn
解析 - 改进
parseLike
查询 - 改进Url生成
- 改进模型的
toArray
方法 - 修正
notIn
查询 - 改进
JSON
字段查询 - 改进Controller类
display
/fetch
方法返回ViewResponse
对象 - 改进
param
方法 - 改进
mysql
驱动getExplain
方法 - 改进时间查询
- 改进模型关联的
has
/hasWhere
方法对软删除的支持
V6.0.0RC4
RC4
版本主要改进包括ORM
库独立,日志系统增加多通道支持,缓存、日志、数据库的配置文件统一调整为多通道模式。
本次更新相对于RC3版本主要涉及配置文件的更新,其它调整参考更新日志的用法调整部分。
主要新特性
数据库和模型改为独立的think-orm
库
数据库和模型操作核心不再内置,改为统一依赖topthink/think-orm
库(该类库已经包括其它的数据库驱动),用法保持一致,功能也没有任何的缺失。
此前think-orm
库已经独立更新维护,但一直是同步核心的ORM,2.0
版本进行了架构调整,保持独立性的同时支持框架依赖,以后数据库操作这块统一在此类库更新。
模型功能增强
对模型做了大量的功能改进,主要包括:
- 关联类增加
withField
和withLimit
方法 - 改进模型的
hasWhere
方法对闭包查询条件的支持完善 - 支持
has
/hasWhere
的多次调用 - 模型的
has
/hasWhere
方法支持软删除 - 增加远程一对一关联
- 远程一对一和一对多支持预载入及
has
/hasWhere
查询 - 模型类支持序列化及缓存操作
- 关联预载入查询支持缓存
- 模型方法支持依赖注入
- 模型事件改进支持系统事件系统
日志支持多通道、并统一命令行和WEB日志格式
此次更新对日志类做了较大的调整和增强,主要包括:
- 日志增加多通道支持,可以同时或者切换写入多个通道
- WEB和CLI的日志记录格式统一,并支持日志格式化
- 对JSON日志格式的改进
- 支持日志写入事件
增加Filesystem
组件
Filesystem
组件用以替代之前的上传类,提供了更多上传到远端的扩展库支持。
容器对象增加回调机制
容器中的对象实例化之后,引入回调机制,利用该机制可以实现诸如注解功能等相关功能。
你可以通过resolving
方法注册一个全局回调
Container::getInstance()->resolving(function($instance,$container) {
// ...
});
回调方法支持两个参数,第一个参数是容器对象实例,第二个参数是容器实例本身。
或者单独注册一个某个容器对象的回调
Container::getInstance()->resolving(\think\Cache::class,function($instance,$container) {
// ...
});
路由注解独立为think-annotation
库
路由注解功能独立为think-annotation
库,并且使用更加规范,支持IDE提示。
多应用模式下路由定义支持纳入应用目录
在多应用模式下,路由定义文件支持放入应用目录的route
目录下。
模板根目录默认放入根目录下的view
目录
模板根目录默认从应用目录下移动到根目录的view
目录,如果是多应用模式的话,下面是应用子目录,如果你需要改回放入原先的应用目录下,可以在应用的template
配置文件中定义view_path
。
'view_path' => app_path('view'),
更新日志
功能改进
- 改进路由类的配置读取
- 改进
parseLike
查询 - 改进
ViewResponse
类增加内容渲染输出支持 - 增加
display
助手函数 - 验证类
maker
方法支持注入扩展验证规则 - 改进事件触发的对象传入
- 改进
Console/Table
类 - 改进关联定义对查询构造器的支持
- 关联类增加
withField
和withLimit
方法,并取消Query
类withField
方法 - 增加延迟关联查询对
withLimit
的支持 - 改进模型
toArray
方法 - 改进Url生成的域名参数
- 改进
make:command
指令生成 - 缓存有效期支持
DateInterval
- 改进Query类find方法
- 改进
json
查询 - 改进查询缓存
- 增加
filesystem
组件 - 改进跨域请求
- 改进路由检测缓存配置
- 改进注解路由的文件写入
- 路由注册支持注册
options
请求类型 - 改进重定向路由检测
- 改进模型的
hasWhere
方法对闭包查询条件的支持完善 - 增加
time_query_rule
数据库配置参数 用于自定义时间查询规则 - 改进时间字段类型的自动识别
- 改进
redis
驱动 - 容器对象增加
invoke
回调机制 - 改进多对多关联
- 资源路由增加
withModel
和withValidate
对各个路由设置不同的模型绑定和验证 - 改进
getLastInsID
方法 - 日志类调整 支持多通道写入
- 改进模型输出
- 支持单独关闭某个通道的日志写入
- 取消部署模式下 不写入调试日志的功能 用调试级别设置单独的日志渠道来替代
- 改进日志记录格式
- 支持日志输出格式化
- 改进资源路由
- 改进命令行日志实时写入
- 日志通道支持单独设置level配置参数
- Log类调整优化
- 增加
paginateX
查询用于大数据分页查询 - 数据集增加
first
和last
方法 - 改进
response/View
类的assign
方法 - 改进请求参数获取问题
- 改进
pathinfo
方法 - 增加一些路径助手函数
- 改进多级控制器访问
- Log类支持
__call
方法 - 多应用模式的路由定义支持放入单独的应用目录
- 模型增加依赖注入支持
- 改进模型事件
- 改进页面
Trace
机制 - 改进
validate
助手函数,支持设置验证失败后是否抛出异常 - 改进容器
bind
方法 - 改进Redis Session驱动
- 改进日志记录的空行问题
- 改进
RedirectResponse
- 改进缓存驱动
- 改进
think optimize:schema
指令 - Url类增加https方法
- 改进
isPjax
判断 - 改进Db类配置获取
问题修正
- 修正模型属性获取
- 修正Request类的过滤功能
- 修正
subDomain
方法 - 修正
input
助手函数 - 修正模型
refresh
方法 - 修正关联统计不使用子查询的方式
- 修正Request类
root
方法 - 修正缓存有效期处理
- 修正
MorphTo
关联 - 修正缓存标签
- 修正mysql驱动
insert
方法 - 修正Db类
connect
方法 - 修正
allowCrossDomain
方法 - 修正Query类
chunk
方法 - 修正分组跨域
- 修正关联预载入查询
- 修正时间字段写入
- 修正验证类
checkSize
- 修正多对多关联闭包
- 修正RuleName类
setRule
方法 - 修正
whereTime
查询 - 修正
request
助手函数 - 修正日志关闭配置
- 修复对多字节字符的兼容性
用法调整
- 模型切换后缀方法
switch
更改为suffix
- 关联定义仅支持查询类的方法
- 取消Query类的
fetchArray
方法 select
查询方法默认返回数据集对象- 取消
optimize:config
指令 - 调整数据库和缓存配置文件格式 默认采用多类型支持 方便切换
- Cache类的
init
和connect
方法取消 并入store
方法 cache
助手函数取消初始化用法cache
助手函数留空返回Cache对象- 默认时间字段类型改为
timestamp
- 注解路由移出核心,注解相关功能使用
topthink/think-annotation
- 改进路由 取消
url_convert
配置参数 - 取消
route:build
指令 - 调整默认模板目录为根目录
view
- 取消默认的请求日志记录 在项目里面自己添加
- 统一
find
查询必须使用查询条件 - 扩展的
service
配置文件默认放到vendor
目录下 - 废除
LogLevel
事件 - 取消App类的序列化方法
- 控制台的
user
配置改为通过静态方法设置当前执行用户
V6.0.0RC3
RC3版本主要改进和优化了系统内置中间件,改进了一些用法和体验,并且把不常用的驱动移出核心改为扩展方式提供。
主要新特性
- 增加
whereWeek
日期查询 - 自增ID获取支持类型自动转换
- 当前请求记录匹配路由规则
- 增加
requireWithout
验证规则 - 优化路由ext和name方法以及URL生成
- 增加项目自定义类
- URL生成使用对象方式操作
- 修改器改进
dump
/halt
助手函数调整支持输出多个变量- 关联自动更新
- 模型数据集增加
delete
和update
方法 - 模型支持表后缀以及动态切换
- 注解路由支持给某个路由指定所属分组
- 多语言支持分组定义
- 支持自定义加载语言文件
- 多语言定义支持YML格式
- 缓存标签改进
- 缓存类增加
push
方法 - Cookie保存时间支持DateTimeInterface
- 增加表单令牌中间件
- 控制器支持__call方法
- 增加
deny_app_list
配置参数 - 控制器中间件only和except定义不区分大小写
app_map
支持指定泛应用映射
问题修正
- 修正参数绑定的浮点型精度问题
- 修正软删除
- 修正模型的数据库连接
- 修正
RedirectResponse
- 修正Session类
flush
方法 - 修正JSON字段参数绑定
- 修正
make:controller
指令生成 - 修正Cache类的
get
方法默认值 - 修正域名绑定
- 修正关联模型的动态获取器
- 修正模型
dateFormat
属性方法 - 修正url生成对多入口的支持
- 修正ini配置文件格式的布尔值转换问题
- 修正路由延迟解析全局配置无效的问题
- 修正路由缓存问题
- 修正关联
update
操作 - 修正
Relation::$selfRelation
默认为null
,导致Relation::isSelfRelation()
方法报错 - 修正
redis
缓存驱动 - 修正事件智能订阅
observe
方法 - 修正模型字段定义对日期查询无效的问题
- 修正Console类
getNamespaces
方法 - 修正
where
查询方法传入Query对象的时候缺少bind
数据的问题 - 修正request类
method
方法 - 修正
route:list
指令 - 修正
Collection
类load
方法 - 修正
redis
驱动的端口类型 - 修正
session
数据序列化使用JSON处理的问题 - 修正分组路由合并解析
- 修正模型的
hidden
方法隐藏关联模型的问题 - 修正关联查询关联键为空的错误
- 修正返回204状态码的响应判断
- 修正
Request
类has
方法对env
和session
的支持 - 修正
provider.php
文件无效问题 - 修正关联查询的部分问题
- 修正validate助手函数支持指定验证器类
- 修正验证类
getValidateType
方法 - 修正入口单独开启调试模式
- 修正加载Composer应用
用法调整
- 页面trace中间件仅在调试模式有效
Socket
日志驱动移出核心PostgreSQL
、Sqlite
和SqlServer
驱动移出核心
,改为扩展- 取消内置
think\Controller
基类 Yaconf
支持移出核心 纳入扩展think-yaconf
- 字段排除改为
withoutField
方法 - 取消
useGlobalScope
方法增加withoutGlobalScope
方法 - 更改默认生成的中间件位置
- 加载默认语言包无需开启多语言中间件
Cookie
类恢复get
和has
方法支持token
助手函数调整- 全局请求缓存参数调整
- 统一中间件调用传参,不支持
:
分割传参 - 缓存数据统一进行序列化后存储
- Cache类rm方法更改为delete方法
- validate助手函数返回Validate对象实例,参数改变
废弃用法
- 取消多语言的
auto_detect
配置 - 取消
session
类的auto_start
配置参数和boot
方法 - 废弃
Where
数组对象查询 - 取消模型事件观察者
- 取消
JumpResponse
及success
/error
/result
等方法和助手函数 - 取消表达式查询解析扩展及
think\db\Expression
类 - 废弃模型自动完成功能,使用模型事件替代
- 取消
cookie
的prefix
参数 - 取消一系列不推荐使用的助手函数
- 取消
optimize:facade
optimize:model
指令 改为扩展方式 - 取消命令行执行URL
- 删除
Config
类__get
和__isset
方法