RedisEngine 新增 Redis 集群支持,通过配置 cluster 选项并传入服务器地址数组即可启用集群模式;缓存包新增多个事件,方便开发者监控缓存行为。cake plugin assets symlink 命令新增 --relative 选项,支持创建相对路径符号链接,适用于容器卷挂载场景;cake server 命令新增 --frankenphp 选项,可通过 FrankenPHP 启动开发服务器;version 命令新增详细模式输出,命令缺失时的错误提示也得到优化。TreeHelper,可将数组(如文件系统目录数组)以树形结构输出;控制台帮助输出支持命令分组;新增 Http\RedirectTrait,简化应用和插件中重定向响应的构建;命令可通过实现 CommandHiddenInterface 标记接口隐藏于命令列表中。#[Configure] 属性新增依赖注入容器支持,可从 Configure 注入数据;TableContainer 代理支持将 ORM 表注入服务;新增 DateTimePeriod 类,包装 PHP DatePeriod 并在迭代时返回 DateTime 实例;SelectQuery::projectAs() 方法支持将查询结果投影到轻量级数据传输对象(DTO),实现只读数据访问。year、inet、cidr 和 macaddr 等数据库类型;Query::optimizerHint() 方法支持接收引擎特定的优化器提示。RateLimitMiddleware 中间件,提供可配置的限流功能,支持多种识别策略(IP、用户、路由、API 密钥)、不同限流算法(滑动窗口、固定窗口、令牌桶),以及自定义标识符、请求成本、动态限制等高级特性。sortableFields 数据新增流畅构建器,支持为虚拟字段和真实字段定义复杂排序,包含多列排序和固定排序支持;新增 SortField 类,可自定义默认排序方向和锁定方向(如 SortField::desc('created', locked: true));URL 支持组合排序键(如 ?sort=title-asc)。assertRedirectBack() 和 assertRedirectBackToReferer();HtmlHelper::scriptStart() 和 scriptEnd() 支持为内联 JavaScript 包裹 标签,适配编辑器语法高亮;最低 PHP 版本要求更新至 8.2.0。ExistsInNullable 规则类,优化限流中间件,修复 PaginatorHelper::limitControl() 的 maxLimit 限制问题、数据库模式中的类型映射缺失等问题,同时弃用了以 Plugin 为类名的插件类加载方式。修复命令补全、日期时区处理、表单错误获取、查询绑定等功能的已知问题;
改进类型注解与 API 文档,提升开发工具支持度;
解决 PHP 8.5 相关弃用警告,增强版本兼容性;
修复查询构建器中的潜在安全问题,避免已执行子查询的绑定参数值被覆盖;
优化 DI 组件集成、路由生成、嵌套关联加载等场景的稳定性。
作为 4.x 系列的维护版本,该更新主要修复了 PHP 8.4 和 8.5 的弃用警告、子查询执行相关问题、查询绑定的 dirty 标志设置问题,同时反向移植了 Cell 动作事件,标准化了 IntegrationTestTrait::assertRedirect() 中的 URL 处理。
此次系列版本更新离不开全球开发者社区的支持。众多贡献者通过提交代码、报告问题、完善文档等方式助力版本迭代,其中包括 ADmad、Mark Story、Corey Taylor、Marcelo Rocha 等核心贡献者,以及来自世界各地的社区成员。特别值得一提的是,josbeir 正式加入 CakePHP 团队,负责文档的更新优化,新文档预览可访问 newbook.cakephp.org。
核心团队建议开发者在升级前查阅官方迁移指南,了解版本间的行为变更。如需体验 5.3.0 版本的新特性,可通过官方渠道获取安装包;对于仍在使用 5.2 或 4.x 系列的用户,建议及时更新至最新维护版本,以获得更好的稳定性和安全性支持。
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。