VSCode中使用phpfmt格式化时PHP变长参数的空格问题求助
解决phpfmt合并变长参数类型与
...标记的问题 原始代码:
function ( int | float...$numbers ): int | float { return array_sum( $numbers ); };
保存后phpfmt会自动把类型和...合并成无空格的形式,严重降低可读性。当前你的phpfmt配置:
"editor.formatOnSave": true, "phpfmt.passes": ["AlignDoubleArrow", "SpaceAroundParentheses"], "phpfmt.psr2": false,
可行解决办法
- 添加空格格式化规则
在phpfmt.passes中加入SpaceBeforeTypeHint规则,强制在类型和...之间保留空格。修改后的配置:
"editor.formatOnSave": true, "phpfmt.passes": ["AlignDoubleArrow", "SpaceAroundParentheses", "SpaceBeforeTypeHint"], "phpfmt.psr2": false,
- 禁用合并规则(如果存在)
部分phpfmt版本内置了MergeTypeHintAndEllipsis规则,专门负责合并类型和...,直接禁用它即可:
"editor.formatOnSave": true, "phpfmt.passes": ["AlignDoubleArrow", "SpaceAroundParentheses"], "phpfmt.disable_passes": ["MergeTypeHintAndEllipsis"], "phpfmt.psr2": false,
- 更新phpfmt版本
如果是旧版phpfmt,可能对PHP 8+的联合类型+变长参数的语法支持不完善,更新到最新版大概率能解决兼容性问题。
修改配置后重启VSCode,再保存代码验证格式是否符合预期。
内容的提问来源于stack exchange,提问作者Lord_Shiva_Mahadev
相关产品推荐
相关产品推荐

