为什么自PHP 5.4起永久启用“echo”短标签?

即使是官方文档告诉我们PHP“短标签”( <? /*...*/ ?> )是“坏”的 。 但是, 从PHP 5.4起,无论short_open_tag设置如何,都会永久启用echotypes<?= /*...*/ ?>

什么改变了?

即使他们之前仅仅因为在共享主机平台上是否启用了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开放标签,并且可以安全使用。