使用PHP短标签是否可接受?
P粉882357979
2023-07-31 17:44:33
<p>根据官方文档的信息:</p>
<blockquote>
<p>PHP中有四对不同的开闭标签可以使用。其中两对(<?php ?>和<script language="php"> </script>)始终可用。另外两对是短标签和ASP风格标签,可以在php.ini配置文件中进行开启和关闭。尽管有些人认为短标签和ASP风格标签很方便,但它们的可移植性较差,一般不推荐使用。</p>
</blockquote>
<p>根据我的经验,大多数服务器都启用了短标签。输入</p>
<pre class="brush:php;toolbar:false;"><?=</pre>
<p>比输入</p>
<pre class="brush:php;toolbar:false;"><?php echo</pre>
<p>更方便。程序员的方便是一个重要因素,那为什么不推荐使用短标签呢?</p>
我太喜欢<?=$whatever?>而不愿放弃它。我从来没有遇到过问题。我会一直使用下去,直到它给我带来麻烦。说真的,有85%的(我的)客户在很少的情况下可以访问php.ini来开启它们。其他15%使用主流的托管提供商,几乎所有的提供商都已经启用了它们。我喜欢它们。
必须清楚区分PHP的短标签(<?)和简写的echo标签(<?=)。
前者在PHP编码规范中被禁止使用,主要是出于常识考虑,因为如果你需要将代码移动到不支持短标签的服务器上(并且无法启用它),那么这会带来很多麻烦。正如你所说,很多共享主机支持短标签,但并不是所有的主机都支持。如果你想分享你的脚本,最好使用完整的语法。
而简写的echo标签<?=无法禁用,因此完全可以使用。
我同意<?比<?php对程序员来说更容易,但只要每次使用相同的形式,就可以进行批量查找和替换。
我不认为可读性是一个理由。大多数严肃的开发者都可以使用语法高亮选项。
正如ThiefMaster在评论中提到的,从PHP 5.4开始,<?= ... ?>标签在任何地方都被支持,无论短标签设置如何。这意味着它们在可移植代码中是安全使用的,但这也意味着对PHP 5.4+有依赖。如果你想支持5.4之前的版本,并且不能保证短标签的使用,仍然需要使用<?php echo ... ?>。
此外,你需要知道,在PHP 7中,ASP标签<%、%>、<%=和script标签被移除。因此,如果你希望支持长期可移植的代码,并且希望切换到最现代的工具,请考虑更改代码的这些部分。