MDC*_*ore 518 php coding-style php-shorttags
这是根据官方文档的信息:
可以在PHP中使用四对不同的开始和结束标记.其中两个,
<?php ?>并且<script language="php"> </script>始终可用.另外两个是短标签和ASP样式标签,可以从php.ini配置文件打开和关闭.因此,虽然有些人发现短标签和ASP样式标签很方便,但它们的便携性较差,一般不推荐.
在我的经验,大多数服务器都启用短标记.打字
<?=
Run Code Online (Sandbox Code Playgroud)
打字要方便得多
<?php echo
Run Code Online (Sandbox Code Playgroud)
程序员的便利是一个重要因素,为什么不推荐他们?
Oli*_*Oli 372
如果您不得不将代码移动到不受支持的服务器(并且您无法启用它),则不建议使用它们,因为它是PITA.正如你所说,许多共享主机确实支持短标签,但"批次"不是全部.如果要共享脚本,最好使用完整语法.
我同意<?并且<?=比程序员更容易<?php,<?php echo但只要你每次使用相同的表格(并且不要在空格中查看)(例如:<? php或<? =),就可以进行批量查找和替换.
我根本不把可读性作为理由.最认真的开发人员可以选择语法突出显示.
正如ThiefMaster在评论中提到的那样,从PHP 5.4开始<?= ... ?>,无论短标签设置如何,都支持标签.这应该意味着它们在可移植代码中使用是安全的,但这确实意味着它依赖于PHP 5.4+.如果你想支持5.4之前的版本并且不能保证短标签,你仍然需要使用<?php echo ... ?>.
此外,您需要知道从PHP 7中删除ASP标记<%,%>,<%=和脚本标记.因此,如果您想支持长期可移植代码并希望切换到最现代的工具,请考虑更改代码部分.
Pao*_*ino 173
我太喜欢<?=$whatever?>放手了.从来没有遇到过问题.我会等到它咬我的屁股.严肃地说,85%的(我的)客户在极少数情况下可以访问php.ini .其他15%使用主流托管服务提供商,几乎所有这些都启用了它们.我爱他们.
duk*_*ing 142
从PHP 5.4开始,回显快捷方式与短标记是一个单独的问题,因为始终会启用回显快捷方式.现在这是事实:
所以回声快捷键本身(<?=)现在可以安全使用.
Bri*_*acy 81
整个讨论的问题在于使用PHP作为模板语言.没有人认为应该在应用程序源文件中使用标记.
然而,PHP的可嵌入语法允许它用作强大的模板语言,模板应该尽可能简单和可读.许多人发现使用像Smarty这样速度慢得多的附加模板引擎更容易,但对于那些要求快速渲染和纯代码库的纯粹主义者来说,PHP是编写模板的唯一方法.
禁止使用短标签的唯一有效参数是所有服务器都不支持它们.关于与XML文档冲突的评论是荒谬的,因为你可能不应该混合使用PHP和XML; 如果你是,你应该使用PHP来输出文本字符串.安全永远不应该是一个问题,因为如果你在模板文件中放入数据库访问凭证等敏感信息,那么,你就会遇到更大的问题!
现在,关于服务器支持的问题,诚然必须要知道他们的目标平台.如果共享主机可能是目标,则应避免使用短标签.但对于许多专业开发人员(例如我自己),客户承认(实际上,取决于事实)我们将决定服务器要求.我经常负责自己设置服务器.
我们永远不会与托管服务提供商合作,因为托管服务提供商不能完全控制服务器配置 - 在这种情况下,我们可以指望运行更多的麻烦,而不仅仅是失去短标签支持.它不会发生.
是的 - 我同意应该仔细权衡短标签的使用.但我也坚信它应该始终是一个选择,并且知道他的环境的开发者应该随意使用它们.
Jak*_*raw 33
由于Zend Framework在其默认的MVC配置中推送" PHP作为模板语言 ",因此短标签正在回归.我不知道辩论是什么,你将在生命中产生的大部分软件将在你或你公司将控制的服务器上运行.只要你保持一致,就不应该有任何问题.
UPDATE
在与使用长形式的Magento做了很多工作之后.结果,我改用了以下的长形式:
<?php and <?php echo
Run Code Online (Sandbox Code Playgroud)
过度
<? and <?=
Run Code Online (Sandbox Code Playgroud)
似乎只是为确保互操作性而进行的少量工作.
Oli*_*rth 13
http://uk3.php.net/manual/en/language.basic-syntax.phpmode.php有很多建议,包括:
虽然有些人发现短标签和ASP风格标签很方便,但它们的便携性较差,一般不推荐.
和
请注意,如果要在PHP或XHTML中嵌入PHP,则需要使用
<?php ?>标记以保持符合标准.
和
在开发用于重新分发或在不受您控制的PHP服务器上部署的应用程序或库时,应避免使用短标记,因为目标服务器可能不支持短标记.对于便携式可再发行代码,请确保不要使用短标签.
Jam*_*day 13
如果有人仍然关注这个...从PHP 5.4.0到Alpha 1 <?=始终可用:
http://php.net/releases/NEWS_5_4_0_alpha1.txt
所以看起来短标签是(a)可接受的,(b)这里留下来.至少现在......
Con*_*oyP 12
在某些Web服务器(共享主机等)中,默认情况下不会启用短标记,因此如果您需要移动到其中一个,则代码可移植性会成为问题.
对于某些人来说,可读性可能是个问题.许多开发人员可能会发现,<?php与<?扫描文件时相比,它更容易成为代码块开头的一个标记,特别是如果您坚持使用HTML和PHP紧密交织的代码库.
我在寻找有关该主题的信息后阅读了本页,我觉得还没有提到一个主要问题:懒惰与一致性.PHP的"真实"标签是<?php和?>.为什么?我真的不在乎.当那些显然适用于PHP时,为什么还要使用其他东西?<%和%>对我来说意味着ASP,而<script .....意味着Javascript(在大多数情况下).因此,为了保持一致性,快速学习,可移植性和简单性,为什么不坚持标准呢?
另一方面,我同意模板中的短标签(并且仅在模板中)看起来很有用,但问题是我们在这里花了很多时间讨论它,它可能需要很长时间才能真正浪费那么多时间输入"php"的额外三个字符!!
虽然有很多选择很好,但它根本不符合逻辑,它可能会导致问题.想象一下,如果每种编程语言都允许4种或更多类型的标签:Javascript可以是<JS或<script ....或<%或<?JS ....会有帮助吗?在PHP的情况下,解析顺序倾向于允许这些东西,但语言在许多其他方面不灵活:它在最轻微的不一致时抛出通知或错误,但经常使用短标签.当在不支持它们的服务器上使用短标签时,由于在某些情况下没有给出错误,因此可能需要很长时间才能找出错误.
最后,我不认为短标签是这里的问题:PHP代码块只有两种逻辑类型 - 1)常规PHP代码,2)模板回声.对于前者,我坚信只允许<?php和?>来保持一致性和可移植性.对于后者,<?= $ var?>方法很难看.为什么一定要这样?为什么不添加更符合逻辑的东西?<?php $ var?>那不会做任何事情(只有在最遥远的可能性中它才能与某些东西发生冲突),这很容易取代尴尬的<?=语法.或者,如果这是一个问题,也许他们可以使用<?php = $ var?>而不用担心不一致.
在有4个打开和关闭标签选项以及随机添加特殊"echo"标签的时候,PHP也可能在php.ini或.htaccess中有一个"自定义打开/关闭标签"标志.这样设计师可以选择他们最喜欢的那个.但由于显而易见的原因,这些都是过度的.那么为什么要选择4个以上?
截至 2019 年,我不同意此处的某些答案。推荐使用:
1. 长标签
<?php /* code goes here */ ?>
Run Code Online (Sandbox Code Playgroud)
2. 短回显标签
<?= /* code goes here */ ?>
Run Code Online (Sandbox Code Playgroud)
原因:它们被PSR-1 基本编码标准推荐
<? /* code goes here */ ?>不推荐其他短标签。
规范说:
PHP 代码必须使用长标签或短回显标签;它不得使用其他标签变体。
| 归档时间: |
|
| 查看次数: |
111224 次 |
| 最近记录: |