甚至用于告诉我们PHP "short tags" (<? /*...*/ ?>
) are "bad"的官方文档。但是,since PHP 5.4, the echo
variety <?= /*...*/ ?>
is permanently enabled regardless of the short_open_tag
setting。
发生了什么变化?
即使之前因为在共享主机平台上是否启用了short_open_tag
的不可预测性而不鼓励它们,当然这个参数不会因为某些子主机运行PHP 5.4而消失吗?
可以说,对语言的这种改变本身并不意味着我们应该避免使用“短标签”的建议的变化,但如果他们遇到了麻烦,那看起来就像PHP开发者不再“讨厌” “他们这么多。正确?
我现在可以得出的唯一合乎逻辑的结论是,在PHP 5.4中引入这一变化必须有一些客观的理由。
这是什么?
答案 0 :(得分:43)
自PHP 5.4以来,并不总是启用短开标签。该文档讨论了短回声标记。这是另一回事。 (短开标签为<?
样式标签,短回声标签为<?=
样式标签,用于回声)。
那为什么他们现在默认启用?好吧,那里有很多脚本,使用<?= $somevar ?>
代替<?php echo $somevar ?>
会有好处。并且because the short echo tags aren't as bad as the short open tags, they chose to always enable the short echo tags。因为现在开发人员(框架和CMS-es)可以依赖它们(或者更确切地说,当PHP 5.4成为主流时)。
但是,短打开标记仍然受到php.ini中short_open_tag
设置的影响。
答案 1 :(得分:4)
永久启用短回声标记(<?=
),而不是短打开标记(<?
)。
这是因为当您创建HTML模板(或任何其他视图模板)时,短回声标记非常方便,如果没有,您必须编写更多内容(例如<?php echo $var; ?>
而不仅仅是<?= $var ?>
)。< / p>
答案 2 :(得分:2)
注意:从PHP 5.4开始,无论short_open_tag设置如何,短回声标记 <?=
始终被识别且有效。
这就是说<?=
始终有效,而不是<?
答案 3 :(得分:2)
原因是< ?
用于XML文档,启用short_open_tags会在XML代码中生成错误。
但是,< ?=
,就像< ?php
一样,不是XML开放标记,可以安全使用。