PHP开放标签“<?=”和“<?php”/“<?”有什么区别?

对不起,这个愚蠢的问题,但我跑遍了使用的代码:

<?=$MAP_OBJECT->printOnLoad();?>
<?=$MAP_OBJECT->printMap();?>
<?=$MAP_OBJECT->printSidebar();?>

有没有什么特别的<?= over <?php或者简单的<?


我们不应该讨论short_open_tags是否被弃用,而应该讨论使用短打开标签时的优缺点:

优点

使用短打开标签<?<?= ,它们更短,并且可能比标准的开始标记<?php<?php echo分别更容易编写。 在模板中直接使用PHP时,这非常方便。 (这也可能是PHP为控制结构提供了另一种语法的原因。)

缺点

需要特定的配置

使用短打开标签时,您需要启用short_open_tags。 如果您或您的虚拟主机供应商决定禁用short_open_tags,那么您的应用程序可能不再工作,并且您可能会遇到一些严重的安全问题。 因为如果short_open_tags被禁用,只有标准的开始标签<?php被识别,并且短开标签内的所有内容都被视为纯文本。 (另见在Sarfraz Ahmed的回答中引用的博客文章。)

如果您的目标是编写不仅适用于您的应用程序,则此要求使您的PHP应用程序的可移植性降低。 这也是为什么许多人建议不要使用短的开放标签(包括PHP手册):

注意:开发用于重新分发的应用程序或库时,应避免使用短标签,或者在不受您控制的PHP服务器上部署,因为目标服务器可能不支持短标签。 对于便携式可重新发布的代码,请务必不要使用短标签。

从PHP 5.4开始, <?=始终可用,无论使用的是short_open_tags选项。 <? 另一方面需要启用该选项。

与XML处理指令冲突

另一个问题是使用XML处理指令(如<?xml … ?> 。 当启用short_open_tags时,您不能直接在代码中使用它们,但需要使用PHP来输出它:

如果您想将PHP与XML结合使用,则可以禁用此选项以便内嵌使用<?xml ?> 。 否则,你可以用PHP打印它,例如: <?php echo '<?xml version="1.0"?>'; ?> <?php echo '<?xml version="1.0"?>'; ?>

否则,PHP将在<?xmlxml中窒息。

现在谈谈弃用的最后一句话:目前不推荐使用short_open_tags。 否则,手册将明确说明。 此外,拉斯姆斯·勒多夫,PHP的发明者,在关于这个问题的回信中写道“这是真的,short_open_tag的值为在PHP 6过时?”的内部邮件列表,有几个原因,不会删除在PHP 6项short_open_tags:

这是我们决定不在PHP 6中删除它们的原因之一。


它们是<?php echo .... ?>简称,称为短标签 。 你应该避免使用它们,因为:

  • 他们似乎在某些服务器上被关闭
  • 在安全性方面他们可能会让你陷入麻烦
  • 他们可以与处理指令(如<?xml ... ?>产生冲突
  • 所以你不应该再使用它们,也请看看:

    PHP短打开标签:方便快捷或短时间更改安全?


    <?=是一个很短的标签,几乎等同于:

    <?php echo 
    

    从PHP 5.4开始,此语法始终可用,但在早期版本的PHP中,它需要启用short_open_tag 。 至于如何在堆栈溢出中搜索它,请尝试code:"<?="

    链接地址: http://www.djcxy.com/p/59157.html

    上一篇: What is the difference between the PHP open tags “<?=” and “<?php”/“<?”?

    下一篇: What does the <?= tag mean?