You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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配置

  1. 打开VS Code设置:按Ctrl+,(Windows/Linux)或Cmd+,(Mac),搜索「PHP CS Fixer: Config」,点击「编辑 in settings.json」。
  2. 在配置里添加或修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:36:47