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 是一个大型版本,如果没有社区的支持和反馈,将无法实现。