编程 Symfony 8.2 开发中:Lock 属性与 RecorderHttpClient 进入主线,8.1.9 已发布

2026-10-14 21:04:35

Symfony 8.2 开发中:Lock 属性与 RecorderHttpClient 进入主线,8.1.9 已发布

信息来源为官方周报 A Week of Symfony #1032(2026-10-05~11) 与 官方发布页。

版本线

分支PHP 要求支持情况
8.18.4.0+2026-05 首发,2027-01 结束支持
8.2(开发中)8.4.0+计划 2026-11 发布,2027-07 结束支持
7.4(LTS)8.2.0+2025-11 首发,bug 修复到 2028-11,安全修复到 2029-11
6.48.1.0+bug 修复到 2026-11,安全修复到 2027-11

8.1 分支的补丁版本 Symfony 8.1.9 于 2026-10-14 发布。7.4 是当前的长期支持版,6.4 仍在维护队列里,但两条线的维护窗口都已经能看到终点。

8.2 已经落地的部分

官方本周放出了几篇围绕 8.2 的文章,覆盖的功能包括:

  • 定向 Cache-Control(targeted Cache-Control);
  • 监听器与服务的相对顺序(relative ordering for listeners and services);
  • 编译后的事件分发器(compiled event dispatcher);
  • 三个新的校验约束(validation constraints);
  • 单次使用的签名 URL(single-use signed URLs)。

除此之外,8.2 开发中还引入了:

  • 用 PHP attributes 定义 workflow(workflows defined with PHP attributes);
  • 新的 Lock 属性,用于拒绝或延迟并发请求(a new Lock attribute to reject or delay concurrent requests);
  • RecorderHttpClient,用于录制并回放 HTTP 交互(record and replay HTTP exchanges)。

后两个值得单独看一眼。

Lock 属性把并发控制从方法体挪到了声明位置:控制器方法或服务方法上加一个 attribute,就能表达「同一资源同一时刻只放一个请求进来」或者「拿不到锁就等待/直接拒绝」这两种策略,不再需要在业务代码里手写获取与释放锁的样板逻辑。

RecorderHttpClient 走的是录制—回放路线:先把一次真实的 HTTP 交换记录下来,测试阶段按记录回放。这样依赖外部 HTTP 服务的测试不必真的发请求,也避开了外部服务不可用或响应变化带来的不稳定。

本周 8.2 的 changelog 有若干条目推进。

Symfony CLI

Symfony CLI 发布了 5.22.0 与 5.21.0。CLI 在本地开发时提供 Symfony Local Server。

发布节奏

Symfony 采用基于时间的发布模型:小版本每六个月一次(5 月与 11 月),大版本每两年一次。Symfony 8.2 是 8.1 之后的下一小版本,计划 2026-11 发布。SymfonyCon Warsaw 2026 的议程也在陆续公布。

需要注意,8.2 仍处于开发阶段,上面列出的特性、命名与时间点都可能继续调整,具体以官方 changelog 与文档为准。

复制全文 生成海报 Symfony PHP 框架 新特性 版本

推荐文章

程序员茄子在线接单