我使用的是 PhpStorm 2023.3.4。
我将项目的代码标准设置为 PSR12。这意味着 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 会按照我想要的方式格式化代码,但只有当我在命令行中启动修复程序以重新格式化整个项目时才会发生这种情况。我也想在 IDE 中正确配置它,但我无法找出正确的代码样式配置。
编辑:我的代码样式 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>
据我在实验后了解到:该 ATM 没有选项。
https://youtrack.jetbrains.com/issue/WI-61677——观看此票证(星标/投票/评论)以获取任何进展通知(并希望提高优先级/尽快实施)。
有趣的是,PHP-CS-Fixer 会按照我想要的方式格式化代码,但只有当我在命令行中启动修复程序以重新格式化整个项目时才会发生这种情况。
在下一个 2024.1 版本(当前处于 EAP 阶段)中,您应该能够完全禁用内置格式化程序并仅使用外部格式化程序。
这可以用作解决方法。尝试最新的 EAP 版本,看看它是否适合您:https://www.jetbrains.com/phpstorm/nextversion/