
Yii PHP框架团队发布了版本2.0.16,其中包含一百多个修复程序和一些改进 。 修复了几个安全问题。
Yii 2.0分支在一年多以前被冻结,这意味着它主要接受更正。 这样做是为了让Yii团队专注于Yii3。在这篇文章的最后,还有关于Yii 3的更多信息。
此版本包括一些可能影响现有应用程序的更改。 确保阅读UPGRADE.md 。
非常感谢参与开发的Yii社区成员 。 没有你,这样的大规模项目是不可能的。 特别感谢翻译人员保持文档最新。
以下是仍设法泄漏到该发行版中的最有趣的改进。 与往常一样,完整列表可在CHANGELOG中找到。
活动记录
Salem Ouerdani,@ tunecino添加了乐观锁定的行为。
乐观锁定允许多个用户同时编辑记录,并避免服务器端发生潜在冲突。 如果用户尝试基于过时的数据(因为已经保存了另一个用户)来保存编辑, StaleObjectException
,并且不会进行更新或删除。
这种锁本身的机制是在Yii的第一个版本中实现的,但是正确地使用它并不是那么简单。 现在很简单。
文档可以在官方手册中找到。
和OptimisticLockBehavior API 。
移居
现在,控制台迁移生成器默认情况下使用表前缀。 如果要更改此设置,可以在控制台命令config yii\console\controllers\MigrateController::useTablePrefix
为false
。
资料库
- MySQL驱动程序现在支持临时类型的小数秒精度(需要MySQL> = 5.6.4)。
- Oracle驱动程序现在支持重置序列。
帮手
yii\helpers\Inflector
学习了如何与UTF-8一起正常工作。- 为Unix来宾计算机上的Windows球添加了标志
yii\mutex\FileMutex::$isWindows
。 - 现在,可以在使用
var_export()
进行序列化之后还原yii\helpers\UnsetArrayValue
, yii\helpers\UnsetArrayValue
yii\helpers\ReplaceArrayValue
。
网格视图
添加了选项$filterOnFocusOut
,它确定失去焦点时是否应执行过滤。
jQuery的
现在您可以安装jQuery 3.3。
互斥体
- 如果提供了
$timeout
尝试获取锁yii\mutex\FileMutex::acquireLock()
的频率yii\mutex\FileMutex::acquireLock()
增加。 - 在
yii\mutex\PgsqlMutex::acquire()
增加了对$timeout
支持。
安全修复
已修复两个安全问题:
- CVE-2018-14578:绕过
\yii\web\Request::getMethod()
CSRF令牌验证 - CVE-2018-19454:
\yii\log\Target
过多记录了敏感信息
应用模板
- 基本模板和高级模板中的Codeception配置均已清除。
- Docker的简单配置已添加到“高级”模板。
- 现在,“高级”模板需要更高版本的Codeception,该版本仅自PHP 7.0起可用。 旧的应用程序将像以前一样工作。
关于Yii 3.0的一些知识
Yii的下一个主要版本将是3.0。 详细的公告将在稍后发布,但现在仅简要介绍一下:
更新的体系结构 :框架分为单独的程序包 。
这将使您可以从他们那里收集您需要的东西。
与JavaScript无关 :随着源代码的重组,Yii与内核中的JavaScript框架无关 。
Yii密钥包不需要jQuery。
与PSR兼容 :Yii 3将遵循PHP-FIG的建议。 已经实现了许多PSR:日志记录,缓存,DI和其他。
Yii 3.0正在积极开发中。 有关发布Alpha版本的详细公告。