ThinkPHP V5.0——为API开发而设计的高性能框架
ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了大量的时间和精力,采用全新的架构思想,引入了更多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载,支持composer,并针对API开发做了大量的优化,包括路由、日志、异常、模型、数据库、模板引擎和验证等模块都已经重构,不适合原有3.2项目的升级,请慎重考虑商业项目升级,但绝对是新项目的首选(无论是WEB还是API开发)。
官方快速入门系列教程 新增了控制器从入门到精通
V5.0.4版本比5.0.3更稳定和规范,并增加了一些新的特性。
主要调整
关联模型重构并增加多态一对多关联;
数据库支持一个字段多次调用不同查询条件;
增加数据库CURD事件支持;
路由到类和控制器的方法支持传入额外参数;
支持全局模板变量赋值;
模型支持独立设置查询数据集对象;
日志针对命令行及调试做出改进;
改进Hook类的行为方法调用;
升级指导
从`V5.0.3`升级到`V5.0.4`需要注意如下事项:
模型的关联定义方法必须采用驼峰法(小写字母打头)命名规范,但关联调用可以支持驼峰和小写方式。
行为类的方法必须使用驼峰法命名,如果你使用了钩子位作为行为执行方法入口,请修改为驼峰法,例如 `app_init`钩子位对应的行为方法名应该是 `appInit`。
如果你使用了Query类的`fetchClass`方法自定义数据集返回对象的话,请改为在模型中设置`resultSetType`属性,数据库类不再支持自定义查询数据集对象(只支持数组和系统的`think\Collection`数据集对象)
主要更新如下:
[请求和路由]
请求缓存支持模块单独开启
Request类post方法支持获取json方式的请求数据
路由到类的方法和控制器方法 支持传入额外参数,用于方法的参数
改进控制器自动搜索的目录规范
改进请求缓存
改进自动参数绑定
修正路由的请求缓存设置
改进Route类name方法
[数据库和模型]
增加数据库查询(CURD)事件
改进多表更新的字段不存在问题
改进Model类的useGlobalScope方法
修正子查询作为表名查询的问题
Model类增加resultSetType属性 用于指定模型查询的数据集对象(默认为空返回数组)
Model类增加toCollection方法(自动调用)
关联模型架构调整
改进预载入with方法的参数支持小写和下划线定义
修正关联多对多一处错误
改进关联多对多的查询
关联模型支持多态一对多关联
预载入关联查询支持关联对象属性绑定到当前模型
支持追加关联对象的属性到当前模型数据
一对一关联预载入支持JOIN和IN两种方式(默认为JOIN)
改进多对多查询
改进模型更新的数据变化比较规则
查询支持一个字段多次查询条件
改进sql日志的sql语句
修正join自身表的别名覆盖问题
模型类的connection属性和数据库默认配置合并
改进in和between查询条件的自动参数绑定
改进Query类对数据集对象以及关联字段排序的支持
增加模型的快捷事件方法
改进Query类的getTableInfo方法缓存读取
model类的saveAll方法支持调用allowField方法进行字段过滤
修正关联查询的时候 whereTime方法的bug
改进Query类的聚合查询
table方法支持字符串方式的子查询
修正count avg方法使用fetchsql无法正确返回sql的问题
[其它]
改进命令行下的日志记录
部署模式下简化日志记录
增加debug日志类型 仅限调试模式记录
改进Template类parseTemplateFile方法
改进Validate类的getRuleMsg方法
控制器的error方法在AJAX请求默认返回url为空
Validate类架构方法增加field参数 用于设置验证字段的描述
改进App类invokeMethod方法对架构函数依赖注入的支持
增加RedirectResponse的restore方法返回值
View类增加share静态方法 用于静态赋值模板变量
验证类增加hasScene方法判断是否存在某个场景的验证配置
修正redis和session驱动的destroy方法返回值
空操作方法的参数传入去掉操作方法后缀
在控制器中调用request和view增加类型提示
改进input助手函数支持多维数据获取
Cache类增加pull和remember方法
改进验证类的confirm验证规则 支持自动规则识别
改进验证类的错误信息定义
增加Validate类自定义验证错误信息的替换规则
Cookie类增加forever方法用于永久保存
模板渲染支持从视图根目录读取模板
改进Hook类的exec方法
[调整]
Db类查询不再支持设置自定义数据集对象
废除Query类的fetchClass方法
控制器的error方法在AJAX请求默认返回的url为空
关联方法定义不支持使用小写下划线,必须使用驼峰法
行为类的方法必须使用驼峰法命名
[ 文档 ]
官方开发手册已经同步更新到V5.0.4版本
[ 5.0完全开发手册 | 5.0快速入门 | 5.0路由完全指南 | 5.0控制器从入门到精通]
[ 下载地址 ]
官网:核心包
GitHub: https://github.com/top-think/think.git (主要维护仓库 官方核心团队)
应用项目:https://git.oschina.net/liu21st/thinkphp5.git
核心框架:https://git.oschina.net/liu21st/framework.git
Composer: composer create-project topthink/think tp5 –prefer-dist
[ 扩展包 ]
下面是针对ThinkPHP5的扩展包 需要使用Composer安装
应用单元测试:https://github.com/top-think/think-testing.git
验证码:https://github.com/top-think/think-captcha.git
图像处理:https://github.com/top-think/think-image.git
队列:https://github.com/top-think/think-queue.git
MongoDb支持:https://github.com/top-think/think-mongo.git
angular模板引擎:https://github.com/top-think/think-angular.git
助手库:https://github.com/top-think/think-helper.git
数据库迁移工具:https://github.com/top-think/think-migration.git
Workerman:https://github.com/top-think/think-worker.git