使用php-cs-fixer时PHP控制结构内HTML不缩进问题如何解决
解决方案
首先确认你的php-cs-fixer版本 >= 3.14.0,该版本之后官方新增了专门处理PHP/HTML混写场景缩进的规则,调整你的.php-cs-fixer.dist.php配置如下:
<?php $finder = PhpCsFixer\Finder::create() ->in(__DIR__) // 如果有纯模板文件也可以单独指定路径 ; return (new PhpCsFixer\Config()) ->setRules([ '@PSR12' => true, // 开启HTML混写缩进支持 'html_indentation' => true, // 调整braces规则,避免控制结构替代语法后的顶层HTML缩进被重置 'braces' => [ 'position_after_control_structures' => 'same', ], ]) ->setFinder($finder) ;
配置更新后重新运行格式化,if/for/while等控制结构内的HTML第一层缩进就会正常保留。
如果你的php-cs-fixer版本较低无法升级,可以将大量混写HTML的模板文件加入格式化排除列表,单独使用支持PHP混写的HTML格式化工具处理这类文件的缩进,避免和php-cs-fixer的规则冲突。
内容的提问来源于stack exchange,提问作者gregdev
相关产品推荐
相关产品推荐

