微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个有效的PHP代码如何?

我正在修改一个wordpress模板,我很好奇,这是 PHP中有效的控制结构.任何人都有洞察力
<?PHP if(condition): ?>
<?PHP if(!condition || !function()) ?>
<?PHP elseif(condition): ?>
<?PHP if(!condition || !function()) ?>
<?PHP endif; ?>

如果我删除所有的标签,我得到(更精确的缩进):

<?PHP
if(condition):
    if(!condition || !function())
elseif(condition):
    if(!condition || !function())
endif;
?>

这是无效的,因为缩进的if语句不会结束.那么如何/为什么这个代码是有效的,如果有开放和关闭PHP标签无处不在?

编辑Kerrek SB.制作一个PHP文件并运行它.有效:

<?PHP if(true): ?>
<?PHP if(true) ?>
<?PHP endif; ?>
<?PHP echo 'here'; ?>
您的(简化)示例代码相当于:
<?PHP
if(condition):
    if(!condition || !function()) { }
endif;
?>

甚至:

<?PHP
if(condition):
    if(!condition || !function());
endif;
?>

关闭<?PHP标签,你似乎得到一个空的声明是免费的. 你的真实例子可能像这样一个人:

<?PHP if(true): if(true); endif; echo 'here'; ?>

但请注意,一个elseif使这个模糊!

<?PHP
if(condition):
    if(!condition || !function());
elseif(condition):   // Bogus! which block does this belong to?
    if(!condition || !function());
endif;
?>

我们必须消除歧义:

<?PHP
if(condition):
{
    if(!condition || !function());
}
elseif(condition):
{
    if(!condition || !function());
}
endif;
?>

现在很清楚,但是现在我们可以完全免除了冒号语法.

感谢Lekensteyn指出这一点!

请参阅下面的讨论进一步的怪异.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐