为什么自PHP 5.4起永久启用“echo”短标签?
即使是官方文档告诉我们PHP“短标签”( <? /*...*/ ?>
)是“坏”的 。 但是, 从PHP 5.4起,无论short_open_tag
设置如何,都会永久启用echo
types<?= /*...*/ ?>
。
什么改变了?
即使他们之前仅仅因为在共享主机平台上是否启用了short_open_tag
而具有不可预知的性质,当然这个参数不会因为一些主机子集将运行PHP 5.4而消失。
可以说,语言的这种改变本身并不意味着build议的改变,我们应该避免使用“短标签”,但是如果他们遇到了麻烦,PHP开发者似乎不再“讨厌”许多。 对?
我现在可以得出的唯一合乎逻辑的结论是,在PHP 5.4中引入这个变化必定有一些客观的基本原理。
它是什么?
从PHP 5.4开始, 短打开的标签并不总是被启用。 文件谈到短回声标签 。 这是一个不同的事情。 (短打开标签是<?
样式标签,短回声标签是<?=
样式标签,用于回声)。
那么为什么他们现在默认启用? 那么,这里有很多脚本,使用<?= $somevar ?>
代替<?php echo $somevar ?>
。 而且由于短回波标签没有短标签短,所以他们select始终启用短回波标签 。 因为现在开发者(框架和CMS-es)可以依赖它们(或者说,当PHP 5.4成为主stream时)。
然而,短的开放标签仍然受到你的php.ini中的short_open_tag
设置的影响。
只有短回波标记( <?=
)永久启用,而不是短打开的标记( <?
)。 这是因为在创buildHTML模板(或任何其他视图模板)时,短回显标记非常方便,而且不必编写更多(如<?php echo $var; ?>
而不是<?= $var ?>
)。
注意:从PHP 5.4开始,无论short_open_tag设置如何,短回显标记<?=
总是被识别并且有效。
所有这一切都是说, <?=
总是有效的,而不是<?
原因是< ?
在XML文档中使用,并且使short_open_tags在XML代码中产生错误。 但是, < ?=
,就像< ?php
不是XML开放标签,并且可以安全使用。