如何配置PHP CS Fixer保留类中方法间的多行空行?
解决PHP CS Fixer移除类内方法间多行空行的问题
我完全懂你想要的那种代码可读性——类里的方法之间留几行空行,一眼就能区分开不同的方法块,看着舒服多了!但PHP CS Fixer总爱“自作主张”把这些空行删掉,而且你之前调no_extra_blank_lines规则没效果,其实是没找对配置方式,咱们来一步步搞定:
核心问题:为什么之前的配置没用?
no_extra_blank_lines规则默认会扫描所有代码场景的多余空行并移除,你设为空数组或false是完全禁用这个规则,但可能扩展或项目的默认配置又把它覆盖了?其实更合理的做法是让规则只清理你不需要的空行,放过方法之间的。
针对VS Code junstyle.php-cs-fixer扩展的配置步骤
方式1:通过VS Code Settings.json配置
- 打开VS Code设置:按
Ctrl+,(Windows/Linux)或Cmd+,(Mac),搜索「PHP CS Fixer: Config」,点击「编辑 in settings.json」。 - 在配置里添加或修改
php-cs-fixer.rules,重点调整no_extra_blank_lines的tokens选项:
"php-cs-fixer.rules": { // 保留方法间多行空行的关键配置 "no_extra_blank_lines": { "tokens": [ "curly_brace_block", "extra", "parenthesis_brace_block", "square_brace_block", "throw", "use" ] }, // 这里可以加你需要的其他规则,比如PSR-12相关的 "@PSR12": true }
解释一下:tokens列表里指定了哪些场景要清理多余空行,我们故意不包含和类、方法相关的token(比如function、class),这样方法之间的多行空行就不会被处理了。
方式2:项目根目录的配置文件(优先推荐)
如果你的项目里有.php-cs-fixer.dist.php或.php-cs-fixer.php文件,VS Code扩展会优先用这个文件的配置,所以直接修改它更稳妥:
<?php $finder = PhpCsFixer\Finder::create() ->in(__DIR__) // 扫描项目根目录下所有文件 ->exclude('vendor'); // 排除依赖目录 return (new PhpCsFixer\Config()) ->setRules([ 'no_extra_blank_lines' => [ 'tokens' => [ 'curly_brace_block', 'extra', 'parenthesis_brace_block', 'square_brace_block', 'throw', 'use', ], ], "@PSR12" => true, // 保留你需要的代码风格规则 ]) ->setFinder($finder);
最后一步:让配置生效
修改完配置后,重启VS Code或者按Ctrl+Shift+P(Windows/Linux)/Cmd+Shift+P(Mac),选择「Reload Window」,再重新格式化代码试试——方法之间的多行空行应该就保住了!
内容的提问来源于stack exchange,提问作者Novocaine
相关产品推荐
相关产品推荐

