PHP CS Fixer如何按最大行长度强制长关联数组多行展示
对应规则方案
你要的效果可以通过PHP CS Fixer的内置规则+全局配置实现,也可以用第三方规则包做更精准的控制:
方案1:原生规则实现
需要搭配以下内置规则+全局行宽配置:
- 必开规则:
array_indentation:自动对齐多行数组的缩进whitespace_after_comma_in_array:保证数组逗号后只有一个空格,符合单行数组规范trailing_comma_in_multiline:多行数组末尾自动加尾逗号(可自行配置是否开启)no_trailing_comma_in_singleline_array:单行数组自动去掉末尾多余逗号
配置示例(.php-cs-fixer.dist.php):
<?php $config = new PhpCsFixer\Config(); return $config ->setRules([ 'array_syntax' => ['syntax' => 'short'], // 统一用短数组语法,不需要可以去掉 'array_indentation' => true, 'whitespace_after_comma_in_array' => true, 'trailing_comma_in_multiline' => ['elements' => ['arrays']], 'no_trailing_comma_in_singleline_array' => true, ]) ->setLineLength(120) // 自定义最大行宽,超过此长度的数组会自动拆成多行 ;
方案2:第三方规则精准控制
如果原生规则的换行阈值不符合你的预期,可以安装第三方规则包 kubawerlos/php-cs-fixer-custom-fixers,使用其中的ArrayLineBreak规则,可以完全匹配你要的“短数组保持单行,超长自动拆成每行一个键值对”的效果,还可以单独配置数组的换行阈值,不需要受全局行宽限制。
内容的提问来源于stack exchange,提问作者slowFooMovement
相关产品推荐
相关产品推荐

