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日志格式的改进
- 支持日志写入事件
具体用法变化可以参考之前的博客:6.0日志变化
增加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 配置改为通过静态方法设置当前执行用户
更多内容可以参考6.0完全开发手册 |