跳至主内容区

Prettier for PHP 0.1:首个 alpha 版本发布 🎉

· 1 分钟阅读
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

自 2017 年 12 月中旬以来,历经 200 多个合并的 pull request 后,我们很高兴宣布 Prettier for PHP 的首个 alpha 版本正式发布。本文中,我们将简要介绍该插件的工作原理、设计理念以及未来规划。

工作原理

为 Prettier 添加新语言支持需要两个核心组件:

  • 解析器:将源代码转换为抽象语法树(AST)。由于 Prettier 使用 JavaScript 开发,我们采用了基于 JS 的 PHP 解析器 php-parser

  • 打印器:将 AST 转换为 Prettier 所需的特殊格式 doc。这种格式本质上是源代码加上换行位置、缩进规则等格式化信息。

虽然解析器可以复用现有成果,但打印器需要全新开发以支持 PHP 的各种 AST 节点类型。此次 alpha 版本的发布,标志着我们确信打印器能够在不破坏代码的前提下完成重新格式化。

如需深入了解插件 API,请参阅官方文档

设计理念

开发代码格式化工具时,很容易陷入添加过多配置选项来迎合不同代码风格的陷阱。PHP 插件坚守 Prettier 的"固执己见"哲学,不引入任何新选项。我们选择以 PHP 社区广泛采用的 PSR-1、PSR-2 和 PSR-12 规范作为格式化标准。

从 Prettier for JavaScript 的经验来看,提供极简配置选项正是 Prettier 的核心优势。稳定版发布后,我们仅会为最具争议的样式问题(如括号风格)添加少量选项,并保持谨慎态度。

后续规划

正式发布稳定版前,我们仍需达成以下目标:

  1. 100% 安全保证

    确保格式化过程不会破坏代码逻辑。当前已接近实现此目标。

  2. 优雅输出

    若输出结果不够美观,插件便名不副实。虽然当前效果已相当出色,但要完美处理所有边界情况仍需更多优化。

  3. 生态集成

    当前可通过命令行按 README 说明试用插件,但编辑器集成尚未完善(详见 VS CodeAtomVim 的相关 issue)。同时,PHP 插件尚未接入 Prettier 在线演练场

期待 Prettier for PHP 吗?欢迎通过以下方式助力我们发布稳定版: