【发布时间】:2015-03-13 17:29:42
【问题描述】:
PSR-2 没有提及任何适用于在 HTML 模板中使用内联 php 标签的内容,但 php-cs-fixer tool 似乎有一个标准。
这是我的模板文件,在运行 php-cs-fixer 之前:
<nav>
<ul>
<li>
<a href="#">Link</a>
<?php
if (! empty($subnav)) {
?>
<ul class="subnav">
<?php
foreach ($subnav as $link) {
?>
<li><?=$link?></li>
<?php
}
?>
</ul>
<?php
}
?>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</nav>
在运行php-cs-fixer fix views/ui/nav.php --level=psr2之后:
<nav>
<ul>
<li>
<a href="#">Link</a>
<?php
if (! empty($subnav)) {
?>
<ul class="subnav">
<?php
foreach ($subnav as $link) {
?>
<li><?=$link?></li>
<?php
}
?>
</ul>
<?php
}
?>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</nav>
这看起来不对,所以我一定遗漏了一些东西。
- 是否有正确的方法来编写符合 PSR-2 的内联 PHP?
- 使用PHP的Alternative syntax for control structures会有什么问题吗?同样,在 PSR-2 中没有提及,
php-cs-fixer似乎对它们没有任何问题,但由于某种原因,它们感觉有点脏!
【问题讨论】:
-
PSR 只适用于 PHP 代码,它对内联 HTML 没有什么可说的,因为 HTML 不是 PHP 代码。你得到的输出只是添加了空格,根据标准,应该有空格:打开
{之后的行使用 4 个空格缩进,因此{\n ?>等等......但如果你在按照您的方式,如果您使用替代语法(foreach():此处标记为<?php endforeach; ?>),输出可能看起来会更好 -
感谢@EliasVanOotegem,一如既往的有用。我将使用替代语法。如果您将其粘贴为答案,我会接受
-
完成,作为答案发布了更多细节...... PS:“一如既往的有用” -> 感谢您的赞美:-P 快乐编码
-
@downvoter,为什么?完全有效的问题...
-
投票反对-1,因为没有动机的-1对IMO没有帮助。至于原因,我只能猜测,但我怀疑这是因为这个问题与 code 没有直接关系(如:尝试编写 X,但无法使其工作),而是关于工具的问题
标签: php code-standards psr-2