如果我启用了短标签 = true,那么我可以像下面这样使用:
我有以下问题:
<?=$variableName ?>
与其
<?php echo $variableName ?>
我有以下问题:
- 这是一个好的实践吗?
- 是否存在服务器依赖性?
- 所有开源和框架都支持此项技术吗?
<?=$variableName ?>
与其
<?php echo $variableName ?>
<? doSomething(); ?>
被认为是一种不好的做法,因为它们不符合XML标准...你是否关心这个问题另当别论。<?= $myString ?>
并不是一种不好的做法,只是不是最好的。PHP是一个模板引擎,然而更好的引擎(如Twig,Mustache,Smarty等)可用。大多数框架包含自己的模板引擎,因此无需使用短标记。enable-short-tags
的情况下使用短输出。由于PHP 5.3已不再受支持,唯一的问题是如果你被迫使用不受支持的版本,这显然有它自己的影响。 :)这本身并不是坏的实践。新版本的PHP已经默认开启,但旧版本可能已启用或未启用。因此,如果您希望每个人都能运行您的代码,则应选择使用<?php
。如果您不关心旧版本的PHP(即没有向后兼容性问题),那么就随意使用。
没有服务器依赖。您只需要启用它即可。
框架通常为贡献者制定指导方针。您个人使用哪一个框架与框架本身无关,而是与是否启用该功能有关。
这不是一个好的实践方法。我为什么这样说呢?因为假设你想要将代码推送到生产环境,而你正在使用共享主机。在PHP 5.4.0以上版本中,默认启用php短标签。如果共享主机使用旧版本的PHP,那该怎么办呢?有些共享主机无法覆盖php.ini设置。如果你想使用php短标签,必须在php.ini中启用它。请参考下面的链接。PHP短标签也可能与XML代码冲突。
没有服务器依赖性。
它完全不依赖于框架。
<?php echo $variableName; ?>
。我个人总是使用这种方法。<?=
,这意味着所有当前支持的PHP版本都支持此功能。关于short_open_tag,可以从php.net获得更多信息:
因此,简而言之,回答您的三个问题:在PHP 5.4.0之前,该指令也会影响shorthand
<?=
,它与<? echo
相同。使用此快捷方式需要打开short_open_tag。自PHP 5.4.0以来,<?=
始终可用。
但如上所述,如果您只在支持PHP的版本的服务器上运行代码,则可以放心使用它。
<?=
,因此通常情况下使用它是安全的 - 我已经将它添加到我的答案中。然而,我仍然认为这不是一个好的做法。根据这些统计数据(http://blog.pascal-martin.fr/post/php-versions-stats-2014-10-en.html),仍然有相当多的服务器使用PHP 5.3或更低版本(PHP 5.3占44.26%,PHP 5.2占22.75%)。这些统计数据来自2014年10月,但我认为它仍然有效,并且我猜测这两个版本的数字总和没有下降到可以忽略的程度。 - leopik<?=
都完全无关紧要。在当前版本中,两者都是正确的。但正如你所说,73% 的人做错了,这必须考虑到。他的应用程序仍然有可能最终运行在一个将短标签设置为 false 的服务器上,导致应用程序无法按预期工作。他可以责怪服务器管理员没有更新 PHP(他完全是正确的——旧版本已经过时),但归根结底,他的应用程序将无法运行,这将成为 OP 的问题。因此,使用 <?=
不是一个好的实践。 - leopik