本文目录导读:

- 发起阶段(Pre-Discussion)
- 撰写 RFC 文档(Drafting)
- 公开讨论(Discussion)
- 投票阶段(Voting)
- 结果与实现(Implementation)
- PHP 版本发布
- 重要补充:非核心代码的 RFC
- 快速总结流程图
PHP 的 RFC(Request for Comments,请求评论)流程是一个社区驱动的、开放透明的提案机制,用于修改 PHP 语言本身(核心语法、函数、类等),而不是用于修改 PHP 应用程序代码。
如果你是想了解如何提交一个 RFC 来改变 PHP,以下是标准的完整流程(依据 PHP 官方 RFC 规范):
发起阶段(Pre-Discussion)
- 想法初步验证:在动手写正式 RFC 之前,建议先在 PHP Internals 邮件列表(internals@lists.php.net)发帖讨论你的想法,这一步非常关键,可以让你了解社区是否感兴趣,以及是否存在技术障碍。
- 寻找支持者:RFC 需要至少一名 PHP 核心开发者或活跃的社区成员作为“赞助人”(Sponsor),帮助你将 RFC 文档规范化并推进流程。
撰写 RFC 文档(Drafting)
在 PHP 官方仓库(GitHub 上的 php/php-rfcs 仓库)中创建 Fork 并添加你的提案文件,或直接在本地编写,RFC 文档通常包含以下必填部分:
- 清晰描述改动。
- 状态:
Draft(草稿)、Under Discussion(讨论中)、Voting(投票中)、Accepted(已接受)、Declined(已拒绝)等。 - 目标版本:提议合并到哪个 PHP 版本(如 8.4)。
- 补丁(Patch):强烈建议提供初步的实现代码(C 语言或 PHP 内部扩展),没有补丁的 RFC 通常不会被认真考虑。
- 说明:为什么要引入这个改动?解决了什么问题?
- 向后兼容性影响:这会影响现有代码吗?如果不兼容,需要明确说明理由。
- 表决(Vote):需要覆盖的范围(如 PHP 核心库、标准库等)。
公开讨论(Discussion)
- 将 RFC 链接发到 PHP Internals 邮件列表,正式进入讨论期。
- 讨论时长:通常至少要有 2 周 的讨论时间。
- 修订:根据社区反馈修改 RFC 内容和补丁,RFC 必须保持更新,特别是响应反对意见。
投票阶段(Voting)
满足以下条件后进入投票:
- 讨论成熟:没有主要的技术障碍或争议。
- 征求投票:RFC 作者在邮件列表请求开始投票。
投票规则(关键点):
- 投票者资格:只有 PHP 核心开发者(Core Developers)、活跃的 PHP 内部成员以及经认证的 PHP 项目成员有投票权。
- 投票门槛:通常需要 2/3(67%) 的赞成票才算通过。
- 投票通道:主要使用
viper7或wiki.php.net上的投票系统。 - 时长:通常为 2 到 4 周。
- 投票要求:需要明确列出所有选项(通常是“赞成”和“反对”)。
结果与实现(Implementation)
- 如果通过:RFC 作者或志愿者需要积极地将补丁合并到 PHP 主仓库(通常是下一个发布周期的分支)。
- 如果被拒绝:该提案关闭,作者可以根据反馈修改后重新提交,但通常强调不要重复提交完全相同的提案。
- 不活跃处理:如果投票通过但长期无人实现,RFC 可能会被标记为“Stalled”(停滞)并最终被撤销。
PHP 版本发布
只有合并到主分支的变更才会出现在未来的 PHP 正式版本中,如果你希望在 PHP 8.5 中发布,那么该 RFC 必须在 8.5 的冻结特性日期(通常在 RC 阶段前)之前被接受并合并。
重要补充:非核心代码的 RFC
如果你的想法是修改一个 用户态扩展(如 phpseclib、Guzzle)而不是 PHP 核心本身,那么不需要走 RFC 流程,PHP 的 RFC 流程严格针对:
- PHP 语言语法(如新增
?->运算符、str_contains函数)。 - 核心标准库(SPL)。
- 内置函数行为。
快速总结流程图
想法验证 → 邮件列表讨论 → 撰写 RFC 文档 → 正式发布讨论 → 投票(需67%+) → 合并补丁 → 发布
↑ ↓
└──────────── 根据反馈修改 ────────────────退出(拒绝)
实践建议:如果你是新参与者,不要一开始就提交大型语言改动,先尝试提交小型的、高价值的标准库函数(str_contains 这类),学习流程,建立信誉,参与讨论和代码审阅是获得投票支持的基础。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播