PHP echo vs PHP短标签

hom*_*ork 60 php function pageload echo

它们的安全性是否相等?我被告知使用

<?=$function_here?>
Run Code Online (Sandbox Code Playgroud)

不太安全,它减慢了页面加载时间.我严格偏向于使用echo.

有什么优点/缺点?

Pas*_*TIN 96

<?并且<?=被称为短打开标签,并不总是short_open_tag使用PHP 5.3或更低版本启用(请参阅指令)(但由于PHP 5.4.0,<?=始终可用).

实际上,在PHP 5.3.0提供的php.ini-production文件中,默认情况下禁用它们:

$ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
Run Code Online (Sandbox Code Playgroud)

因此,在要分发的应用程序中使用它们可能不是一个好主意:如果未启用应用程序,则应用程序将无法运行.

<?php另一方面,不能被禁用 - 所以,使用这个是最安全的,即使它写的时间更长.


除了不一定启用短开标签这一事实外,我认为没有太大区别.

  • 也许使用GD或CURL或PHP也不是一个好主意,因为它们是外部模块,可以在一些蹩脚的共享主机提供商上关闭?它是完整的BS,它们几乎总是打开. (6认同)
  • PHP,mysql和apache的默认配置不适合生产使用,我们都知道:)你只是提倡编写不可读的代码......因为什么?40个中的一个服务器可能不支持短标签?:) ...旁边**这个指令也影响了PHP 5.4.0之前的简写<?=,它与<?回声.使用此快捷方式需要启用short_open_tag.自PHP 5.4.0起,<?=始终可用.** (6认同)
  • 考虑到它们在默认的生产配置中被关闭,我认为它们会越来越少地开启; 考虑到不使用它们很简单/简单......好吧,你当然可以不使用你想要的任何语法,我只希望你不必在具有默认配置的服务器上部署你的应用程序指令;-) (2认同)

car*_*arl 32

Echo通常只是更好用,因为......

  1. 它支持良好的编程风格.
  2. 它无法在php.ini中关闭(短标签可以)
  3. PHP中将删除短标签6)

但是,它们通常是相同的.也可以看看:

  1. PHP短标签是否可以使用?
  2. 如何在PHP中回显和打印不同?

  • php社区对短标签的厌恶让我感到困惑; 完全删除它们php6只是最后的证明,php设计团队是疯了.<?= $ foo?>在模板中比<?php echo $ foo更清晰; ?> (18认同)
  • 更糟糕的是:<script language ="php"> ... </ script> (16认同)
  • 什么?!6正在删除它们?跛脚酱!如果我负责服务器,我不关心可移植性.`<?=`比`<?php echo`好得多 (15认同)
  • php6的原因是不正确的 (9认同)
  • PHP6或将调用的下一个版本将*NOT*删除短开放标记.如果有什么,默认情况下它们将被禁用. (7认同)
  • @Mark - 所有使用<?php?>而不是一个程序员使用<%%>,另一个使用<%=%>,另一个<??>他们不知道他们都讲同一种语言. (3认同)
  • 是的,显然php6将失去asp符号:"<%".并非所有短标签.所以"<?" 仍然有效且上述"3"的原因是错误的. (3认同)

小智 19

除了关于使用短标签是否是一个好主意以及是否应该被认为是弃用的整个半宗教辩论之外,最初的问题是他们使用的安全性或不安全性.

简而言之,如果您在不支持它们的服务器上使用短标记,则可能会暴露部分PHP代码,这可能被视为安全漏洞.


Blo*_*arf 11

http://php.net/manual/en/language.basic-syntax.phpmode.php说明:

从PHP 5.4开始,无论short_open_tag设置如何,短回声标记始终被识别且有效.

short_open_tag 关闭或开启无关紧要.

所以现在你可以毫无顾虑地在你的模板中放置这样的标签:

    <?= (($test) ? "val1" : "val2") ?>
Run Code Online (Sandbox Code Playgroud)

现在是正式的,"短回声标签"与"短标签"非常不同.

  • 这是现代的正确答案。一些较旧的答案将短标签(可以关闭并已弃用)与短回显标签(无法关闭)混淆。 (3认同)

leo*_*old 5

只是添加另一个 PSR 来源:http : //www.php-fig.org/psr/psr-1/

PHP 代码必须使用长标签或短回显标签;它不得使用其他标签变体。

指定:

 <?php ?> and <?= ?>
Run Code Online (Sandbox Code Playgroud)