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

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

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

<?=

比打字方便多了

<?php echo 

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


当前回答

以下是其美妙的流程图:

来源:关于软件工程堆栈交换的类似问题

其他回答

注意:从PHP 5.4开始,短标记<?=,现在总是可用。

因为它会与XML声明产生混淆。不过,很多人都同意你的观点。

另一个问题是,如果用短标签编码所有东西,最后却发现最终的托管服务器已经关闭了它们,这会带来痛苦……

PHP短标记(<?)和快速回显标记(<?=)之间必须有明确的区别。

前者是PHP编码标准所禁止的,主要是出于常识,因为如果您必须将代码移到不支持它的服务器上(并且您不能启用它),那么它就是一个PITA。正如你所说,许多共享主机确实支持短标签,但“许多”并不是全部。如果您希望共享脚本,最好使用完整的语法。

而简略的回显标记<?=不能禁用,因此完全可以使用。

我同意<?对程序员来说比<?PHP,但只要每次使用相同的表单,就可以进行批量查找和替换。

我根本不认为可读性是一个理由。大多数认真的开发人员都可以选择语法高亮显示。

正如ThiefMaster在评论中提到的,从PHP 5.4开始,<?=……?>标签在任何地方都被支持,不管shortttags设置如何。这应该意味着在可移植代码中使用它们是安全的,但这也意味着依赖于PHP 5.4+。如果你想支持5.4版本之前的版本,并且不能保证短标签,你仍然需要使用<?PHP回显…? >。

此外,您还需要知道ASP标记<%、%>、<%=和script标记已从PHP 7中删除。因此,如果您想要支持长期可移植的代码,并想要切换到最现代的工具,请考虑更改这部分代码。

一种稍有不同的情况是在开发CodeIgniter应用程序时。CodeIgniter似乎在模板/视图中使用PHP时使用短标签,否则在模型和控制器中它总是使用长标签。这并不是框架中的硬性规则,但在大多数情况下,框架和许多来自其他用途的源代码都遵循这一约定。

我的意见?如果您从未打算在其他地方运行这些代码,那么如果您愿意,可以使用它们。当我意识到这是一个愚蠢的想法时,我宁愿不做大量的搜索和替换。

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

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

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

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