PHP 中的大括号或冒号-endif 语句 - 哪一个提供更好的性能和代码兼容性


Curly braces or colon-endif statements in PHP - which one provides better performance and code compatibility?

我正在查看许多代码片段,我发现人们可以在if语句中使用以下两种方法:

方法一:

<?php
  if ($condition) {
    // Do this
  }
?>

方法2:

<?php
  if ($condition):
    // Do this
  endif;
?>

那么哪种方法与PHP编译器和PHP版本更兼容,还是两者之间没有明显的区别呢?

大多数情况下,替代 (endif) 语法用于视图脚本。通常很难看到/注意到 if 语句的结尾,因为大括号只占用一个字符,当您位于文件底部时,很难判断它是 if 还是 foreach 的结尾。例如:

<?php if ($condition): ?>
    <div>a huge block of html</div>
<?php endif; ?>

它们完全等效。请参阅组织的风格指南以确定应使用哪个。

这种替代语法与可能更熟悉的语法没有任何不同。只是不要将两者混为一谈。类似的语法也存在于whileforforeachswitch

通常,您应该根据可读性和团队偏好选择首选语法。

真正可能抛弃你的是,当你开始看到滥用逻辑连接运算符的"if语句"时,如下所示:

isset( $value ) AND print( $value );

正如我到目前为止所看到的,在我的应用程序中,它们之间没有区别,但是如果您在没有规则的情况下混合它们,您可能会遇到很多问题,因为可能会得到一些错误,您将搜索卷曲但您没有使用卷曲。选择一种独占使用的语法。

唯一的区别是在非常大的文档和项目中。 我的公司使用大括号而不是endif,endelse...当我们从事非常大的项目时。 比较文件大小时,使用大括号有一个好处。较小的文件加载速度更快,因此我们努力减少每个字节。我们注释掉了结尾大括号,以便在测试时更容易识别,然后删除生产中的所有注释。