我正试图在WordPress项目中使用php-cs-fixer,这意味着我(不幸的是(有混合了php和HTML的文件。我正在使用@PSR12规则集。
我在让PHP控制结构中的HTML正确缩进时遇到了问题。举个例子片段:
<?php if (!empty($related_posts)) : ?>
<div class="module--related_posts alignfull has-2-columns has-hover-state slider-on-mobile">
<h3 class="has-text-align-center">Related <?= esc_html($title) ?></h3>
</div>
<?php endif ?>
php-cs修复程序将其重新格式化为:
<?php if (!empty($related_posts)) : ?>
<div class="module--related_posts alignfull has-2-columns has-hover-state slider-on-mobile">
<h3 class="has-text-align-center">Related <?= esc_html($title) ?>
</h3>
</div>
<?php endif ?>
请注意,结束的h3
标记已移动到新行,并且if
语句体中的第一级缩进已被删除。
我可以接受h3
问题,因为如果我把打开标签放在它自己的行上,这个问题就会得到解决:
<h3 class="has-text-align-center">
Related <?= esc_html($title) ?>
</h3>
但if
语句中缺少缩进会让我头疼。for
和while
语句也会发生同样的情况。
php-cs-fixer中有没有我忽略的规则可以解决这个问题?
不是一个真正的答案,但我最终只是切换到PHPCodeSniffer来解决这个问题。
keradus关于"PHP代码与html代码不一致;问题:
PHP CS Fixer从未使用支持混合html/PHP文件编写。一些修复程序在单个文件中支持一个php部分和一个html部分,但不支持它们的大量混合,比如在模板文件中。如果我们想支持模板文件,我们不仅需要检测和跟踪具体的修复程序,还需要提供一些大型集成测试(就像我们对Sf规则集所做的那样(,它仍然适用于大多数重要的规则。在此之前,我不会声称我们正式支持html/php混合文件。
还有另一个答案:
我们的目标不是修复混合文件(PHP和HTML在单个文件中(