CakePHP 3.9.0 发布

CakePHP 核心团队很高兴地宣布 CakePHP 3.9.0 立即可用。这是 3.9.0 的第一个稳定版本。3.9.0 为 CakePHP 提供了大量改进,无论大小。

此版本是 3.x 的最后一个计划功能版本。未来核心团队将专注于 4.x 版本的发布。根据我们的发布时间线,3.9 将继续接收错误修复,直到 2021 年 6 月 15 日。

升级到 3.9.0

您可以使用 composer 升级到 CakePHP 3.9.0

php composer.phar require --update-with-dependencies "cakephp/cakephp:3.9.*"

弃用警告

  • ConsoleIo::info()success()warning()error() 在 4.0 中将不再接受 null 值作为 message 参数。
  • 在测试用例中使用逗号分隔的字符串作为 $fixtures 已被弃用。改为使用数组,或者在测试用例类上实现新的 getFixtures() 方法。
  • Validator::errors() 已重命名为 Validator::validate()
  • FormHelper::create()$context 参数是布尔值或字符串时,现在会发出弃用警告。这些值在 4.0 中会触发致命错误,需要在升级之前更新。
  • FunctionBuilder::cast([...]) 的魔术方法签名已弃用。改为使用 FunctionBuilder::cast('field', 'type')
  • 已放弃的 zendframework 包已替换为 laminas,它提供了向后兼容的类。

3.9.0 的新功能?

迁移指南 完整列出了 3.9.0 的新功能。我们建议您在升级时阅读该页面。3.9.0 的一些亮点是

  • 命令类可以实现 defaultName() 方法来覆盖基于约定的 CLI 名称。
  • Query::orderAsc()Query::orderDesc() 现在接受 Closure 作为它们的字段,使您能够使用提供的 QueryExpression 对象构建复杂的排序表达式。
  • 添加了 Cake\Datasource\SimplePaginator。这个类使对非常大的结果进行分页更加高效。它跳过了运行可能很昂贵的 count() 查询。如果您在分页控件中只使用“下一页”和“上一页”导航,这个类可能是一个不错的解决方案。
  • Cake\Http\Client\Response::isSuccess() 从 4.0 回溯。
  • Cake\Http\Middleware\CspMiddleware 从 4.0 回溯。
  • 添加了 BaseApplication::addOptionalPlugin()。此方法处理加载插件,以及处理可能不存在的插件的错误,因为它们是开发依赖项。
  • i18n 全局函数现在只返回字符串。在 4.0 中进行的更改,当没有提供翻译字符串时删除了 null 返回值,已回溯到 3.9。
  • 可以使用 disableLenientParsing() 禁用对 parseDateTime()parseDate() 的宽松解析。默认情况下是启用的 - 与 IntlDateFormatter 相同。
  • 添加了 Table::saveManyOrFail() 方法,该方法会在发生错误的情况下抛出 PersistenceFailedException,其中包含失败的特定实体。实体是在事务中保存的。
  • 添加了 Table::deleteMany()Table::deleteManyOrFail() 方法,用于一次删除多个实体,包括回调。实体是在事务中删除的。
  • Text::uuid() 现在在 PHP 5.6 中使用 random_int() 而不是 mt_rand()。这添加了对 paragonie/random_compat 的依赖,它为 PHP 5.6 实现了它。

3.9.0 的贡献者

感谢所有帮助 3.9 发布的贡献者

  • ADmad
  • Cauan Cabral
  • Corey Taylor
  • Edgaras Janušauskas
  • Erwane Breton
  • Florian Krämer
  • Frank de Graaf (Phally)
  • Jorge González
  • Mark Scherer
  • Mark Story
  • Robert Pustułka
  • Tibor
  • Val Bancer
  • Victor Eduardo de Assis
  • Zuluru
  • andrii-pukhalevych
  • bancer
  • gregs
  • mcsknp
  • ndm2
  • nojimage

一如既往,衷心感谢所有帮助发布此版本的社区成员,他们通过报告问题和发送 pull 请求帮助我们。3.9.0 是一个大型版本,如果没有社区的支持和反馈,将无法实现。

下载GitHub 上的打包版本