PHP作为模板引擎时,PHP CS Fixer代码格式化异常的禁用规则咨询
问题分析与解决方案
你遇到的这个格式化问题,大概率是PHP CS Fixer的no_html_entities规则导致的——这条规则的作用是把HTML中的实体字符(比如>、<这类)转换为对应的原始字符,除非这些实体出现在PHP代码块内部。
在你的场景里,代码中的->(也就是>的实体形式)被这条规则转换成了>,所以原本的<!-- some html code ->就变成了<!-- some html code -->,导致注释的内容和结构发生了不符合预期的变化。
要阻止这种行为,你只需要在PHP CS Fixer的配置文件(通常是.php-cs-fixer.dist.php)里禁用这条规则即可:
<?php $finder = PhpCsFixer\Finder::create() ->in(__DIR__ . '/your-project-directory') ; return (new PhpCsFixer\Config()) ->setRules([ // 保留你需要的其他规则,比如@PSR12、@Symfony等 '@PSR12' => true, 'no_html_entities' => false, // 禁用导致问题的规则 ]) ->setFinder($finder) ;
需要注意的是,目前PHP CS Fixer没有针对HTML注释单独设置规则开关的选项,所以禁用no_html_entities会全局停止实体转换的操作。如果只是想在特定注释里保留实体,你可以尝试把需要保留的实体放在PHP输出语句里(比如<?php echo '>'; ?>),但如果是静态HTML注释的话,全局禁用这条规则是最直接的解决方案。
内容的提问来源于stack exchange,提问作者Alpine418
相关产品推荐
相关产品推荐

