以下是官方文件提供的信息:

有四对不同的 可以是开始和结束标记 用于PHP。其中两个<?php ? > And <script language="php"> </script>, 总是可用的。另外两个 是短标签和ASP风格标签,和 可以打开和关闭从 Php.ini配置文件。因此, 而有些人发现短标签和 ASP样式标签方便,它们都是 便携性较差,而且通常不是 推荐。

根据我的经验,大多数服务器都启用了短标记。打字

<?=

比打字方便多了

<?php echo 

程序员的便利性是一个重要因素,那么为什么不推荐他们呢?


当前回答

我太喜欢<?=$whatever?>让它去。从来没有问题。我会一直等到它咬到我的屁股。说真的,85%的(我的)客户在极少数情况下可以访问php.ini。另外15%使用主流主机提供商,而且几乎所有的提供商都启用了主流主机提供商。我爱他们。

其他回答

如果您确定服务器将支持短标记,并且您的开发人员能够理解它,那么使用短标记是可以接受的。 许多服务器不支持它,许多开发人员在看过一次之后就会理解它。 我使用完整的标记来确保可移植性,因为它真的没有那么糟糕。

说了这么多,我的一个朋友说,为了支持其他标准化的asp样式标签,比如<%而不是<?,这是php.ini中称为asp_tags的设置。他的理由如下:

... 随意的约定应该是 标准化。也就是说,任何时候我们都可以 面对一系列的可能性 都是等价的,比如什么 奇怪的标点符号我们的编程 应该用语言来界定 我们应该选择一个标准 坚持下去。这样我们 减少所有人的学习曲线 语言(或者其他的东西 公约属于)。

听起来不错,但我不认为我们所有人都能在这件事上保持一致。与此同时,我将坚持使用完整的<?php。

为了避免可移植性问题,在PHP标记开始时使用<?如果你的php文件是纯php,没有HTML,你不需要使用结束标签。

把< ?(不带尾随空格)到<?PHP(后面有一个空格):

find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\?(?!php|=|xml|mso| )/<\?php /g'

把< ?(后面有空格)到<?PHP(保留尾随空格):

find . -name "*.php" -print0 | xargs -0 perl -pi -e 's/<\? /<\?php /g'

整个讨论的问题在于使用PHP作为模板语言。没有人认为标签应该在应用程序源文件中使用。

然而,PHP的可嵌入语法允许它作为一种强大的模板语言使用,并且模板应该尽可能简单易读。许多人发现使用像Smarty这样慢得多的附加模板引擎更容易,但对于我们中那些要求快速呈现和纯代码库的纯粹主义者来说,PHP是编写模板的唯一方法。

反对使用短标记的唯一有效论点是,并不是所有服务器都支持短标记。关于与XML文档冲突的注释是可笑的,因为无论如何您都不应该混合使用PHP和XML;如果你是,你应该使用PHP输出文本字符串。安全性永远不应该成为问题,因为如果您将数据库访问凭证等敏感信息放在模板文件中,那么您就会遇到更大的问题!

现在,关于服务器支持的问题,我们必须清楚自己的目标平台。如果共享主机是一个可能的目标,那么应该避免使用短标记。但是对于许多专业开发人员(比如我自己)来说,客户端承认(实际上,这取决于事实)我们将决定服务器需求。通常我自己负责设置服务器。

我们从未与不给予我们绝对控制服务器配置的主机提供商合作——在这种情况下,我们可能会遇到更多麻烦,而不仅仅是失去短标签支持。这是不会发生的。

所以,是的,我同意短标签的使用应该仔细权衡。但我也坚信这应该是一种选择,并且了解环境的开发人员应该自由地使用它们。

从PHP 5.4开始,echo快捷方式与短标记是分开的问题,因为echo快捷方式将始终启用。现在这是事实:

SVN由Rasmus Lerdorf修订 邮件列表讨论

因此echo快捷方式本身(<?=)现在可以安全使用了。