Laravel 的 12.x 分支又迎来了一个小版本迭代——v12.48.0 正式发布了。别看版本号只跳了一小步,这次更新在问题修复和功能增强上的密度可不低,涉及队列、验证、集合、测试、CORS 等多个模块,甚至还有一些潜在的无限循环隐患被堵住了。下面直接梳理一下这次更新的核心内容。
本次更新主要围绕以下几个方向展开:
- 修复变量未正确重新赋值的问题(#58376)
- 优化 PendingRequest 的类型定义(#58386)
- 修复与第三方防护工具的向后兼容性异常(#58385)
- 调整
Illuminate\Testing\TestResponse::assertHeader()方法,使其对 HTTP 头名称不区分大小写(#58383) - 修复验证规则参数为空时触发的 TypeError 错误(#58380)
- 优化 PendingBatchFake 的过滤逻辑(#58375)
- 解决延迟队列场景下可能引发的无限循环问题(#58373)
- 持续完善
Illuminate\Support\Str的类型支持与稳定性(#58372) - 确保 Bus::chain 在执行时自动剔除 falsy 值(#58369)
- 修正 v12.47.0 中 Str::replaceMatches 方法文档中标注的错误数组类型(#58364)
- 移除
Mockery\PHPUnitIntegration中不必要的重复调用(#58363) - 清理 failed_jobs 表中冗余索引(#58362)
- 翻译字符串现支持在占位符中使用方括号和花括号(#58367)
- 为
HandleCors中间件新增skipWhen配置能力(#58361) - 为
Illuminate\Support\Str补充完整的类型测试用例(#58365) - 引入
$class参数替代部分反射操作,提升运行性能(#58391) - 并行测试过程中按进程独立编译视图,避免冲突(#58390)
- 修复某些场景下类导入失败的问题(#58394)
- 为枚举验证规则实现 Stringable 接口(#58392)
- 修复 MemoizedStore 中 restoreLock 方法的行为异常(#58423)
- 修复 Filesystem::sharedGet 在部分读取时的数据截断问题(#58418 / #58419)
- 为 ValidatedInput::__isset() 方法补充缺失的
@param文档注释(#58410) - 在 JobPopping 事件中增加队列名称字段(#58413)
- 为 JobReleasedAfterException 事件添加重试回退机制(#58414)
- 修正 Number::abbreviate 方法的 return type 文档注释(#58408)
- 为 Number::pairs() 方法的元组返回类型添加准确类型注释(#58409)
- 将
/src/Illuminate/Foundation/resources/exceptions/renderer目录中 tar 包版本由 7.4.3 升级至 7.5.3(#58404) - 更新集合 merge 方法的返回类型声明(#58405)
- 修复部分文件中遗漏的命名空间导入(#58401)
- 在 PendingRequest 内部统一捕获并处理
Throwable异常(#58395) - chore:将 PruneCommand::isPrunable() 方法访问权限调整为 protected(#58430)
- 扩展 PendingRequest@pool() 方法的返回类型定义(#58437)
- 测试覆盖率与稳定性进一步提升(#58432)
- 新增 BatchFinished 事件,便于监听批量任务完成状态(#58431)
以上就是 v12.48.0 的主要变更。对于正在维护 Laravel 项目的开发者来说,延迟队列无限循环的修复、CORS 中间件的 skipWhen 配置、以及并行测试中的视图独立编译,都是值得重点关注的变化。更详细的上下文可以查阅对应的 issue 和 PR,这里就不再展开了。
