PhpStorm 格式,在上下文之后减少行缩进

问题描述 投票:0回答:1

我们的团队将开始使用 PHP 格式化程序。我们决定最简单的方法是使用现有的标准,并决定使用 PSR-12。

一半的团队使用 VSCode 和扩展 Intelephense 进行格式化。 另一半使用 PhpStorm 和带有 PSR-12 预设的内置格式化程序。

必须在 PhpStorm 中进行一些修改才能与 VSCode 格式化程序表现相同。这是因为 VSCode 扩展需要 Premium 来更改格式首选项。

但是还有一个问题。

PhpStorm 在上下文后缩进换行,不知道如何描述它。从下面的代码片段中可以看出,数组中的字符串之前有 8 个空格,右括号之前有 4 个空格。

if (1 && [
        'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
    ]) {
}

如果我删除第一个参数 (

1
),缩进就会变得正确

if ([
     'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
]) {
}

用VSCode格式化时,结果是这样的

if (1 && [
     'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
]) {
}

我已多次阅读 PhpStorm 格式设置,并在网上搜索类似的问题,但我距离解决此问题还差得很远。

我是否缺少某个设置,或者您还有其他建议吗?

php visual-studio-code formatting phpstorm
1个回答
0
投票

PSR-12 的以下部分指出:

括号中的表达式可以分成多行,其中每个后续行至少缩进一次。这样做时,第一个条件必须位于下一行。右括号和左大括号必须单独放在一行上,且之间有一个空格。条件之间的布尔运算符必须始终位于行的开头或结尾,而不是两者的混合。

因此,正确的行格式是:

<?php

if (
    1
    && [
        'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
    ]
) {
    // noop
}
  • 启用代码样式 -> PHP -> 换行和大括号 -> if() 语句 -> 第一个元素之前的新行
  • 启用代码样式 -> PHP -> 换行和大括号 -> if() 语句 -> 最后一个元素后的新行
  • 启用代码样式 -> PHP -> 换行和大括号 -> 二进制表达式 -> 如果长则换行(或砍掉)
© www.soinside.com 2019 - 2024. All rights reserved.