v6.0.0-rc4
版本发布时间: 2019-08-16 16:11:15
top-think/framework最新发布版本:v8.0.4(2024-07-30 09:55:55)
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
配置改为通过静态方法设置当前执行用户