2019-01-30 2263次浏览
  1. 活动记录
  2. 迁移
  3. 数据库
  4. 助手类
  5. GridView
  6. jQuery
  7. 互斥锁
  8. 安全修复
  9. 项目模板
  10. 关于 Yii 3.0

我们很高兴的宣布 Yii 框架 2.0.16 版本发布了。请参阅 https://www.yiichina.com/download 上的说明安装或升级到此版本。

2.0.16 版本是 Yii 2.0 的一个小版本,其中包含 一百多个增强功能和错误修复,包括安全修复。

Yii 2.0 在 一年多前 达到功能冻结,这意味着 2.0 分支只会进行错误修复。这样做是为了让 Yii 团队专注于即将到来的 Yii 3 重写。在本公告的最后,还有 Yii 3 的一些内容介绍。

可能会影响现有应用程序的细微更改,因此请务必查看 UPGRADE.md 文件。

非常感谢为该框架做出贡献的所有 Yii 社区成员。没有你们是不可能的。 还要感谢保持国际文档最新的翻译人员。

有许多 活跃的 Yii 社区,所以如果您需要帮助或想要分享您的经验,请随时加入他们。

您也可以在 我们的论坛 上讨论此新闻。

下面我们总结一下本发行版中的一些增强和更改。 可以在 CHANGELOG 中找到完整的更改列表。

活动记录

Salem Ouerdani,@tunecino 增加了乐观锁定的行为。

乐观锁允许多个用户访问相同的记录以进行编辑并避免潜在的冲突。 如果用户尝试将记录保存在某些已停顿的数据上(因为另一个用户已修改了数据),则会抛出 StaleObjectException 异常,并跳过更新或删除。

锁本身是从第一个版本的 Yii 实现的,但是正确地使用它并不容易。现在您可以在 乐观锁的指南部分OptimisticLockBehavior 本身 找到详细信息。

迁移

控制台迁移生成器默认值已更改,以便使用表前缀生成迁移。如果要禁用此行为,请通过控制台命令映射将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\UnsetArrayValueyii\helpers\ReplaceArrayValue 对象。

GridView

添加了 $filterOnFocusOut 选项,该选项允许在筛选字段失去焦点时触发筛选。

jQuery

现在允许安装 jQuery 3.3。

互斥锁

  • 当提供 $timeout 时,增加了 yii\mutex\FileMutex::acquireLock() 的锁重试频率。
  • yii\mutex\PgsqlMutex::acquire() 中添加了对 $timeout 的支持。

安全修复

此版本中修复了两个安全问题:

  • CVE-2018-14578: 绕过 \yii\web\Request::getMethod() 的 CSRF 令牌检查
  • CVE-2018-19454: 在 \yii\log\Target 中过度记录敏感信息

项目模板

在基本和高级项目模板中清理了代码配置。 基本 Docker 配置已添加到高级项目模板中,使您可以快速开始开发。 高级模板测试需要从 PHP 7.0 开始工作的较新版本的 Codeception。旧的应用程序将与旧版本的 Codeception 一起使用,因此如果您不想要它,则无需升级。

关于 Yii 3.0

Yii 3 将成为 Yii 框架的下一个主要版本。随后将另行发布公告,但这里是对此版本的简要概述:

一种新的架构:Yii 框架已分成 多个包。这将允许您选择组成 Yii 应用程序所需的软件包,而不是安装一个提供所有内容的软件包。

JavaScript 无关:通过重新组织源代码,Yii 将不再将您绑定到特定的 JavaScript 框架。 Yii 的核心功能已被重写为无 jQuery。

PSR 兼容:Yii 3 将采用 PHP-FIG 建议,并实现许多 PSR:记录,缓存,DI 等。

Yii 3.0 目前正在开发中。 我们将在达到 alpha 稳定性时单独发布。