context managers v2 的讨论已经启动:这份 rfc(2.0 版,10 月 23 日,作者 larry garfield 与 arnaud le blanc)目标版本是 php 8.7,提案引入 using 关键字定义 context block,保证 setup / tear down 严格在块的首尾执行。

▲ 事件来源页面实时截图:wiki.php.net(官方 RFC)
语法要点
using 是表达式;GENERATOR 是任意求值为 Generator 的表达式(称为 Context Manager),VAR 接收 yield 出的值。wiki 索引显示讨论已于 11 月 5 日在 internals 启动。
影响评估
建议跟踪讨论与投票,并提前评估 using 语法对现有代码与扩展解析器的影响。来源:wiki.php.net/rfc/context-managers-v2
Context Managers v2 想解决什么
PHP 缺少结构化的资源作用域管理:锁、事务、临时状态切换往往靠手写 try/finally。提案引入上下文管理器语法,让资源在进入与退出作用域时自动获取与释放,减少遗漏清理导致的死锁与状态泄漏。
v2 与 v1 的差别
v2 调整了语法形式与「退出时异常处理」的语义,使其更贴近现有语言习惯,并明确了嵌套与提前 return 时的行为。目标版本为 PHP 8.7,目前处于讨论阶段。
立即学习“PHP免费学习笔记(深入)”;
不只是 try/finally 语法糖
它解决的是「资源获取与释放必须成对」的结构性问题:获取放在进入作用域时,释放交给语言保证,避免异常路径遗漏清理。对数据库事务、文件锁、临时状态切换这类场景收益最明显。
与 generator / defer 的区别
它不是延迟执行,而是作用域级的资源契约:进入时获取、退出时释放,且释放顺序与嵌套层级严格对应。这比手写 finally 更不容易遗漏,也更容易被静态检查覆盖。

▲ 官方索引页截图
关键信息
| 项目 | 内容 |
|---|---|
| 类目 | RFC 与需求 |
| 级别 | 中 |
| 日期 | 2026-10-23 |
| 关联编号 | RFC: context-managers-v2 |
| 影响范围 | PHP 8.7 提案 |
| 核验状态 | 已官方确认 |
来源:https://wiki.php.net/rfc/context-managers-v2



















