我何时使用if / endif与If {}?

时间:2011-05-16 21:04:49

标签: php if-statement

问题是自我解释。

在PHP中何时使用if/endif表示法而不是标准if(something){}表示法?

示例:

<?php if($a == 5): ?>
A is equal to 5
<?php endif; ?>

对战:

<?php if($a == 5){ ?>
A is equal to 5
<?php } ?>

6 个答案:

答案 0 :(得分:15)

其他人给出了“模板化”的答案,但没有真正解释原因。花括号非常适合表示块,但它们依赖于缩进来清晰地读取。所以这很清楚:

<?php
if (1 == 2)
{
    while (1 < 2)
    {
        doSomething();
    }
}

很明显哪个大括号匹配哪个。

但是,如果你要进入HTML块,你可能会完全停止缩进。例如:

<?php
if (1 != 2) { ?>
<div>This always happens! <?php while (true) { ?>
  <p>This is going to cause an infinite loop!</p>
<?php }
}

这很难理解。如果您使用endif样式,它看起来会更清晰:

<?php
if (1 != 2): ?>
<div>This always happens! <?php while (true): ?>
  <p>This is going to cause an infinite loop!</p>
<?php endwhile;
endif;

代码的内容更清楚地显示了正在做什么。对于这种有限的情况,它更清晰。

答案 1 :(得分:14)

简短回答:

始终使用 if($something) { }并且几乎从不使用 if/endif。它是PHP 4.0.0以来的标准,虽然旧的语法不会消失,但这是每个人都期望的。

如果您真的在寻找可以使用if / endif的情况,那么当使用php作为模板语言时就是这样。

有些人喜欢这样的事情:

<?php if ($foo): ?>
Hi There
<?php else: ?>
cya!
<?php endif; ?>

优于

<?php if ($foo) { ?>
Hi There
<?php } else { ?>
cya!
<?php } ?>

和imho这是因为每一行“说话”,当php标签之间有很多html时,这可能会有所帮助。

答案 2 :(得分:1)

这两种方法都可以接受。有些人认为替代语法(endif)在模板中更易读。恕我直言,具有现代语法着色/突出显示错误,不再适用。只需选择一种风格并坚持下去。

答案 3 :(得分:1)

这是一种风格选择。它们是类似的,一个并不比另一个好。

前者在某些情况下可能会很好,因为在HTML块集中间陷入困境时可能更容易阅读。

答案 4 :(得分:1)

我主要使用if / endif来停止和启动之间的php代码块,所以几乎总是在输出原始html时。

例如:

<?php if ($n == 3): ?>
Lorem ipsum.
<?php endif; ?>

至少在我看来,这看起来比以下更好:

<?php if ($n == 3) { ?>
Lorem ipsum.
<?php } ?>

答案 5 :(得分:1)

您可以同时使用两者,但优先样式和当前已知的样式是标准if(expr)