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

如何禁用PSR-12中强制语句与左大括号同行的规则?

如何在PSR-12规范中禁用左大括号同行规则?

你需要保留PSR-12的大部分规范,但让类、函数、if/else等所有语句的左大括号单独换行(而非与语句同行),可以通过修改phpcs.xml配置,排除PSR-12中强制左大括号同行的规则,再启用对应单独换行的规则来实现。

格式示例

错误格式(左大括号与语句同行)

if (true) { 
} 

class Test {
}

function foo() {
}

正确格式(左大括号单独换行)

if (true)
{ 
} 

class Test
{
}

function foo()
{
}

修改后的phpcs.xml配置

<?xml version="1.0"?>
<ruleset name="Standard">
    <!-- 引入PSR-12基础规范 -->
    <rule ref="PSR12" />
    
    <!-- 排除PSR-12中强制左大括号同行的规则 -->
    <rule ref="PSR12.Classes.ClassDeclaration.OpenBraceSameLine">
        <severity>0</severity>
    </rule>
    <rule ref="PSR12.ControlStructures.ControlStructureOpeningBrace.SameLine">
        <severity>0</severity>
    </rule>
    <rule ref="PSR12.Functions.FunctionDeclaration.OpenBraceSameLine">
        <severity>0</severity>
    </rule>

    <!-- 启用左大括号单独换行的规则 -->
    <rule ref="Squiz.Classes.ClassDeclaration.OpenBraceNewLine" />
    <rule ref="Squiz.ControlStructures.ControlStructureOpeningBrace.Newline" />
    <rule ref="Squiz.Functions.FunctionDeclaration.OpenBraceNewLine" />
    
    <!-- 保留你原本添加的其他规则 -->
    <rule ref="Generic.Formatting.MultipleStatementAlignment" />
    <rule ref="Generic.Formatting.SpaceAfterCast" />
    <rule ref="Generic.Arrays.DisallowLongArraySyntax" />

    <exclude-pattern>vendor/*</exclude-pattern>
</ruleset>

配置说明

  • 先引入PSR12基础规则集,确保大部分规范保留。
  • 通过设置<severity>0</severity>禁用PSR-12中三个强制左大括号同行的规则,分别对应类声明、控制结构(if/else等)、函数声明。
  • 启用Squiz标准中对应的左大括号单独换行规则,覆盖之前的行为。
  • 保留你原本配置的其他规则和排除目录。

内容的提问来源于stack exchange,提问作者Dayvson Spacca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:42:34