PHP 代码格式化
轻量级 PHP 代码格式化 VS Code 扩展,无 npm 依赖。
功能特性
- 整文档格式化:打开 PHP 文件后,使用
Shift + Alt + F 或右键菜单格式化整个文档
- 选区范围格式化:选中部分代码后格式化,自动处理
<?php 标签
- 自动缩进检测:根据代码现有缩进风格自动推断使用空格或制表符
- PHP 语法预检查:格式化前自动执行
php -l 语法检查,避免语法错误代码被错误格式化
- 配置文件支持:自动识别工作区中的
.php.tools.ini 配置文件
- 状态栏实时反馈:右下角状态栏显示格式化状态(就绪/成功/警告/错误)
- 输出面板日志:详细的执行日志,方便排查问题
- 配置热重载:修改设置后无需重启扩展即可生效
- 文件忽略:支持按文件名模式忽略特定文件
安装要求
- Visual Studio Code >= 1.80.0
- PHP >= 5.6(推荐PHP7.0+或PHP8.0+)
确保系统环境变量中已配置 php 命令,或在设置中指定 PHP 可执行文件路径。
使用方法
快捷键格式化
在 PHP 文件中按 Shift + Alt + F(Windows/Linux)或 Shift + Option + F(macOS)即可格式化当前文档。
命令面板
按 Ctrl + Shift + P 打开命令面板,输入:
fphp: 格式化当前文件 — 格式化当前打开的 PHP 文件
fphp: 打开输出面板 — 查看格式化执行日志
右键菜单
在编辑器中右键选择 "格式化文档" 或 "格式化选定内容"。
配置项
在 VS Code 设置(Ctrl + ,)中搜索 fphp 即可查看所有配置项。
| 配置项 |
类型 |
默认值 |
说明 |
fphp.php_bin |
string |
php |
PHP 可执行文件路径 |
fphp.detect_indent |
boolean |
false |
自动检测缩进类型和大小(开启后将忽略 indent_with_space) |
fphp.psr1 |
boolean |
false |
启用 PSR1 代码风格 |
fphp.psr1_naming |
boolean |
false |
启用 PSR1 风格 — 第 3 和 4.3 节 — 类和方法名大小写规范 |
fphp.psr2 |
boolean |
true |
启用 PSR2 代码风格 |
fphp.wp |
boolean |
false |
启用 WordPress 代码风格 |
fphp.indent_with_space |
integer \| boolean |
4 |
使用空格代替制表符进行缩进。可设为 false(使用制表符)或 2/3/4/5/6/7/8 |
fphp.enable_auto_align |
boolean |
false |
启用等号(=)和双箭头(=>)的自动垂直对齐 |
fphp.visibility_order |
boolean |
false |
修复类中方法的可见性顺序 — PSR-2 第 4.2 节 |
fphp.ignore |
string[] |
[] |
忽略文件名中包含与指定模式匹配的文件(使用 JS 的 .match 方法匹配) |
fphp.passes |
string[] |
见下方 |
调用指定的编译器转换(pass) |
fphp.exclude |
string[] |
[] |
禁用指定的转换(pass) |
fphp.smart_linebreak_after_curly |
boolean |
false |
将多语句块转换为多行块 |
fphp.yoda |
boolean |
false |
尤达风格比较(Yoda comparisons) |
fphp.cakephp |
boolean |
false |
应用 CakePHP 编码风格 |
fphp.custom_arguments |
string |
"" |
提供自定义参数以覆盖配置生成的默认参数 |
默认启用的 Passes
fphp.passes 的默认值包含以下转换(可以在配置中对下面任意项进行删除):
AlignDoubleArrow — 垂直对齐 =>
AlignPHPCode — 对齐 HTML 块中的 PHP 代码
SpaceAfterExclamationMark — 感叹号后加空格
AlignConstVisibilityEquals — 垂直对齐可见性和 const 块中的 =
AutoSemicolon — 自动补全分号
ConvertOpenTagWithEcho — 转换 <?= 为 <?php echo
AlignEquals — 垂直对齐 =
MergeNamespaceWithOpenTag — 合并 namespace 与 open tag
RemoveSemicolonAfterCurly — 移除花括号后的分号
RestoreComments — 恢复注释格式
ShortArray — 数组简写语法 []
ExtraCommaInArray — 数组末尾加逗号
AlignDoubleSlashComments — 对齐 // 注释
IndentTernaryConditions — 三元运算符缩进
IndentPipeOperator — 管道运算符缩进
AlignSuperEquals — 对齐 =, .=, &= 等
扩展会自动在工作区目录中向上查找 .php.tools.ini 文件。如果找到且位于当前工作区范围内,格式化时会自动使用该配置文件。
示例 .php.tools.ini:
passes=AutoSemicolon,ShortArray
exclude=LongArray
indent_with_space=4
状态栏说明
编辑 PHP 文件时,右下角状态栏会显示 fphp 图标:
- 白色图标 — 就绪状态
- 绿色勾选 — 格式化成功
- 黄色警告 — 文件被忽略或存在警告
- 红色错误 — 格式化失败或 PHP 语法错误
点击状态栏图标可快速打开输出面板查看日志。
常见问题
Q: 格式化失败,提示 "获取 PHP 版本时出错"
A: 请检查系统是否已安装 PHP,且 php 命令可在终端中直接执行。如 PHP 路径非常规,请在设置中修改 fphp.php_bin 为完整路径,例如 "C:/php/php.exe"。
Q: 为什么格式化后代码缩进变了?
A: 默认启用 PSR2 风格(fphp.psr2 为 true),PSR2 要求使用 4 个空格缩进。如需保留原有缩进风格,可将 fphp.detect_indent 设为 true。
Q: 如何禁用某个默认转换?
A: 将该转换名称添加到 fphp.exclude 数组中,例如 ["AutoSemicolon"]。
开源协议
BSD-3-Clause