我们的团队将开始使用 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 格式设置,并在网上搜索类似的问题,但我距离解决此问题还差得很远。
我是否缺少某个设置,或者您还有其他建议吗?
PSR-12 的以下部分指出:
括号中的表达式可以分成多行,其中每个后续行至少缩进一次。这样做时,第一个条件必须位于下一行。右括号和左大括号必须单独放在一行上,且之间有一个空格。条件之间的布尔运算符必须始终位于行的开头或结尾,而不是两者的混合。
因此,正确的行格式是:
<?php
if (
1
&& [
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
]
) {
// noop
}