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

如何修改PSR2函数调用签名规则让多参数换行使用制表符

解决PHP_CodeSniffer函数调用签名缩进用制表符的问题

需针对PSR2.Methods.FunctionCallSignature嗅探单独配置缩进规则——该嗅探不会自动继承全局的ScopeIndent配置,这就是修复时用空格而非制表符的原因。

修改你的PHP_CodeSniffer XML配置如下:

<arg name="tab-width" value="4"/>

<rule ref="PSR2">
    <exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
    <exclude name="Generic.Files.LineLength.TooLong"/>
    <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/>
</rule>

<rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>

<rule ref="Generic.WhiteSpace.ScopeIndent">
    <properties>
        <property name="indent" value="4"/>
        <property name="tabIndent" value="true"/>
    </properties>
</rule>

<!-- 新增:为函数调用签名单独配置制表符缩进 -->
<rule ref="PSR2.Methods.FunctionCallSignature">
    <properties>
        <property name="indent" value="4"/>
        <property name="tabIndent" value="true"/>
        <!-- 可选:确保参数前的空格保留(默认已开启,可根据需求调整) -->
        <property name="argumentSpacing" value="true"/>
    </properties>
</rule>

配置说明

  • 新增的PSR2.Methods.FunctionCallSignature规则块,专门控制函数多参数换行后的缩进行为:tabIndent="true"强制使用制表符,indent="4"匹配你的制表符宽度设置。
  • 保留Generic.WhiteSpace.DisallowSpaceIndent规则,避免代码中混合出现空格缩进。
  • 重新运行phpcbf命令(phpcbf sniffs=PSR2.Methods.FunctionCallSignature)后,修复后的代码会使用制表符缩进参数行:
$this->afpJobService->createFileThumb(
	$this->a, 
	$this->b, 
	$this->c, 
	$this->d, 
	$e
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37