编辑于2023年1月10日
我已经完善了以下答案,并在Github上发布了它。
该存储库提供了如何在本地安装的最小指南,不需要使用docker。
这与原始答案中概述的原则相同,但此新存储库以PSR12作为基本规则集,并强制执行规则1、3和4,同时允许OP中的规则2。我仍然认为这样可以获得最大的自由度,但是可以通过分叉存储库并通过在设置中启用"phpsab.debug": true
和"phpsab.snifferShowSources": true
来检查各个规则在VS Code中进行调整。
我终于坐下来想出了如何实现这一点。这是从Ubuntu的角度来看的,但我认为它也可以在其他平台上工作。
我测试了一堆linter / fixer扩展,但没有真正取得进展,直到我找到了这个。
安装phpcs / phpcbf的版本以及扩展可以使用的规则集有点复杂,因此我将所有内容捆绑在docker容器中(当然也可以使用composer在本地完成)。
我无法找到可以强制执行OP中的两个空格规则的规则,但是有很多自定义选项,包括编写自己的sniffs(而且老实说我没有特别努力地寻找)。但是上面链接的项目中的默认规则集/标准允许额外的空格,所以我感觉这已经成功了一半。
对于其他规则,以下是需要的明确部分,但请务必查看这些资源:1和2,并在创建自定义规则集时启用"phpsab.snifferShowSources": true
和"phpsab.debug": true
。
<rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie">
</rule>
<rule ref="Drupal.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis">
</rule>
<rule ref="PSR2.ControlStructures.ControlStructureSpacing">
<properties>
<property name="requiredSpacesAfterOpen" value="1" />
<property name="requiredSpacesBeforeClose" value="1" />
</properties>
</rule>
intelephense
来格式化你的代码。默认情况下,它会在条件语句前面添加空格,并在函数后面添加空格。如果要使用Stroustrup 样式花括号(K&R变体)
,请将默认设置更改为"intelephense.format.braces": "k&r"
,并将其添加到settings.json
文件中。就目前所知,在 vscode 中找不到任何 PHP 扩展程序可以对括号内的空格进行处理。希望这有所帮助。 - Raphaël Balet"intelephense.format.braces": "k&r",
小技巧!至少函数声明现在看起来好多了……但是,条件语句的格式} else {
真的让我很难受,这个没法解决。 :/ - Anatoly IVANOV