php-cs-fixer 不会在 PHP 控件结构中缩进 HTML



我正试图在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语句中缺少缩进会让我头疼。forwhile语句也会发生同样的情况。

php-cs-fixer中有没有我忽略的规则可以解决这个问题?

不是一个真正的答案,但我最终只是切换到PHPCodeSniffer来解决这个问题。

keradus关于"PHP代码与html代码不一致;问题:

PHP CS Fixer从未使用支持混合html/PHP文件编写。一些修复程序在单个文件中支持一个php部分和一个html部分,但不支持它们的大量混合,比如在模板文件中。如果我们想支持模板文件,我们不仅需要检测和跟踪具体的修复程序,还需要提供一些大型集成测试(就像我们对Sf规则集所做的那样(,它仍然适用于大多数重要的规则。在此之前,我不会声称我们正式支持html/php混合文件。

还有另一个答案:

我们的目标不是修复混合文件(PHP和HTML在单个文件中(

最新更新