PHP 回显与 PHP 短回显标签
Posted
技术标签:
【中文标题】PHP 回显与 PHP 短回显标签【英文标题】:PHP echo vs PHP short echo tags 【发布时间】:2010-11-26 01:49:30 【问题描述】:它们的安全性是否相同?我被告知使用
<?=$function_here?>
不太安全,并且会减慢页面加载时间。 我严格偏向于使用 echo。
有什么优点/缺点?
【问题讨论】:
【参考方案1】:<?
和 <?=
被称为短开放标签,并且在 php 5.3 或更低版本中并不总是启用(参见 short_open_tag
指令)(但自 PHP 5.4.0 起,<?=
始终可用)。
实际上,在 PHP 5.3.0 提供的 php.ini-production 文件中,它们默认是禁用的:
$ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
因此,在您要分发的应用程序中使用它们可能不是一个好主意:如果不启用它们,您的应用程序将无法运行。
<?php
,另一方面,不能被禁用——所以,使用这个是最安全的,即使写的时间更长。
除了不一定启用短打开标签这一事实外,我认为没有太大区别。
【讨论】:
也许使用 GD 或 CURL 或 PHP 也不是一个好主意,因为它们是外部模块,可以在一些蹩脚的共享主机提供商上关闭?完全是废话,他们几乎总是打开。 考虑到它们在默认生产配置中是关闭的,我认为它们会越来越少地被打开;;考虑到不使用它们很简单/容易......好吧,您当然可以免费使用任何您想要的语法,我只是希望您不必将应用程序部署在具有默认配置的服务器上指令;-) PHP、mysql 和 apache 的默认配置不适合生产使用,我们都知道 :) 你只是在提倡编写不可读的代码......因为什么? 40 台服务器中的一台可能不支持短标签? :) ... 除了 ,该指令还影响了 PHP 5.4.0 之前的简写 =,它与 很遗憾,我没有数据来支持我的理论,但我不会在这一点上抓住 1/40 的机会 (事实上,我不是——而且我在一家我们自己配置服务器的公司工作,不依赖外部托管服务);;我应该补充一点,PHP 5.4 还没有发布(但应该在几天/几周内),并且需要几个月的时间才能安装在 1/40 的服务器上 (更不用说将它安装在其中的 50% 上所花费的时间......)【参考方案2】:Echo 通常更好用,因为...
-
它支持良好的编程风格。
在php.ini中不能关闭(短标签可以)
但是,它们通常是相同的。另见:
-
Are PHP short tags acceptable to use?
How are echo and print different in PHP?
【讨论】:
什么?! 6 删除它们?跛子酱!如果我负责服务器,我不关心可移植性。<?=
比 <?php echo
好很多
最糟糕的是:
php 社区对短标签的厌恶让我感到困惑;完全删除它们 n php6 对我来说只是最终证明 php 设计团队疯了。 = $foo ?> 在模板中比
php6 原因不正确
PHP6 或任何下一个版本将被调用将 NOT 删除短开放标签。如果有的话,默认情况下它们将被禁用。【参考方案3】:
除了关于使用短标签是否是个好主意以及是否应该被弃用的整个半宗教辩论之外,最初的问题是使用它们的安全性或不安全性。
简单地说,如果您在不支持短标签的服务器上使用短标签,您的部分 PHP 代码可能会暴露出来,这可能会被视为安全漏洞。
【讨论】:
【参考方案4】:您应该使用 = 并要求您的系统管理员/主机打开 short_open_tags,关闭它没有任何缺点,也没有减速,解析器寻找
此外,在 PHP 5.5 上 = 将默认打开,长期 = 将是首选,而
如果还不确定.. 用谷歌搜索一下会有很大帮助 =D
【讨论】:
【参考方案5】:http://php.net/manual/en/language.basic-syntax.phpmode.php 状态:
从 PHP 5.4 开始,无论
short_open_tag
设置如何,短回显标签始终被识别并有效。
short_open_tag
关闭或打开不再重要。
所以现在您可以毫无顾虑地在您的模板中添加这样的标签:
<?= (($test) ? "val1" : "val2") ?>
现在正式了,“短回显标签”和“短标签”有很大的不同。
【讨论】:
【参考方案6】:只是添加另一个 PSR 来源:http://www.php-fig.org/psr/psr-1/
PHP 代码必须使用长标签或短回声标签;它不得使用其他标签变体。
说明:
<?php ?> and <?= ?>
【讨论】:
以上是关于PHP 回显与 PHP 短回显标签的主要内容,如果未能解决你的问题,请参考以下文章