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

PhpStorm 2023.3.4中PSR-12多异常catch语句格式化异常问题

PhpStorm 2023.3.4 中 PSR-12 多异常捕获缩进配置问题

环境与问题背景

  • 使用PhpStorm 2023.3.4
  • 项目已配置PSR-12代码标准,采用4空格缩进,禁用制表符

编写了符合PSR-12规范的多异常捕获代码:

<?php
class MyClass {
    public function myMethod(): void 
    {
        try {
            ...
        } catch (
            Exception01 |
            Exception02 |
            ...
            ExceptionNN $e
        ) {
            // Do something about it
        }
    }
}

但执行自动格式化后,IDE会将代码改写为如下样式,异常类没有正确缩进:

<?php
class MyClass {
    public function myMethod(): void 
    {
        try {
            ...
        } catch (
        Exception01 |
        Exception02 |
        ...
        ExceptionNN $e
        ) {
            // Do something about it
        }
    }
}

手动修正缩进后,IDE还会提示“空格不正确”。奇怪的是,PHP-CS-Fixer命令行工具可以正常将代码格式化为期望的样式,现在需要在PhpStorm中配置正确的代码风格。

当前导出的代码风格XML配置

<code_scheme name="Project" version="173">
  <PHPCodeStyleSettings>
    <option name="BLANK_LINES_BETWEEN_IMPORTS" value="1" />
    <option name="THROWS_WEIGHT" value="0" />
    <option name="PARAM_WEIGHT" value="28" />
    <option name="RETURN_WEIGHT" value="28" />
    <option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
    <option name="LOWER_CASE_NULL_CONST" value="true" />
    <option name="ELSE_IF_STYLE" value="COMBINE" />
    <option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
    <option name="BLANK_LINES_AFTER_OPENING_TAG" value="1" />
    <option name="KEEP_BLANK_LINES_AFTER_LBRACE" value="0" />
    <option name="NEW_LINE_AFTER_PHP_OPENING_TAG" value="true" />
    <option name="SPACES_AROUND_PIPE_IN_UNION_TYPE" value="true" />
  </PHPCodeStyleSettings>
  <codeStyleSettings language="PHP">
    <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
    <option name="BLANK_LINES_AFTER_PACKAGE" value="1" />
    <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
    <option name="ALIGN_MULTILINE_BINARY_OPERATION" value="true" />
    <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
    <option name="CALL_PARAMETERS_WRAP" value="5" />
    <option name="CALL_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
    <option name="CALL_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="METHOD_PARAMETERS_WRAP" value="5" />
    <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
    <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="EXTENDS_LIST_WRAP" value="5" />
    <option name="METHOD_CALL_CHAIN_WRAP" value="5" />
    <option name="PARENTHESES_EXPRESSION_LPAREN_WRAP" value="true" />
    <option name="PARENTHESES_EXPRESSION_RPAREN_WRAP" value="true" />
    <option name="BINARY_OPERATION_WRAP" value="5" />
    <option name="FOR_STATEMENT_LPAREN_ON_NEXT_LINE" value="true" />
    <option name="FOR_STATEMENT_RPAREN_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_WRAP" value="5" />
    <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
    <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
    <option name="IF_BRACE_FORCE" value="3" />
    <option name="DOWHILE_BRACE_FORCE" value="3" />
    <option name="WHILE_BRACE_FORCE" value="3" />
    <option name="FOR_BRACE_FORCE" value="3" />
  </codeStyleSettings>
</code_scheme>

解决方法

图形界面配置步骤

  1. 打开PhpStorm设置:File > Settings(Windows/Linux)或PhpStorm > Settings(Mac)
  2. 进入Editor > Code Style > PHP
  3. 切换到Wrapping and Braces标签
  4. 找到Catch clause区域,设置:
    • 勾选Align multiline catch types
    • 确保Indent catch types的缩进值为4(与PSR-12要求一致)

直接修改XML配置

如果图形界面找不到对应选项,可以直接在导出的XML配置中,向<codeStyleSettings language="PHP">节点添加以下配置:

<option name="ALIGN_MULTILINE_CATCH_TYPES" value="true" />
<option name="INDENT_CATCH_TYPES" value="4" />

修改后,PhpStorm的自动格式化会将多异常捕获的类型缩进至与catch (的左括号对齐,符合PSR-12规范,同时不会再出现缩进错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:27:33