【问题标题】:PHP Short hand tags 7.xPHP 速记标签 7.x
【发布时间】:2017-11-18 21:37:18
【问题描述】:

只是想知道,我有一个 codeigniter 项目,我被要求做一些工作。我也在尝试(在我可以的地方)准备项目以升级到 php 7.x(目前在 5)。

我对 php 短标签的使用感到困惑。我喜欢它们,但它们似乎在 7 中被移除?

所以我的问题是,我应该删除它们吗?问题是,他们使代码更具可读性,为什么要删除它?

例如:

<?php if ($product->price_discounted > 0)
{
    echo "<p class='discounted price'>" . $product->price_discounted . "</p>" 
}
?>

<? if ($product->price_discounted > 0): ?>
    <p class='discounted price'><?= $product->price_discounted ?></p>
<? endif; ?>

我更喜欢第二个版本,但是每当我在 php7 上运行我的项目时,这些都不起作用。是我遗漏了什么还是它们真的被删除了?

仅供参考:我在 php.ini 中有短标签

【问题讨论】:

标签: php php-shorttags


【解决方案1】:

重要更新:

短标签不再被弃用。 尽管 RFC 通过了,但还是引发了一些争议,PHP 内部小组拒绝实施它1。查看迁移指南进行确认:

https://www.php.net/manual/en/migration74.php


原帖:

短开标签在 PHP 7.4 中已弃用,将在 PHP 8 中删除。

https://wiki.php.net/rfc/deprecate_php_short_tags

此外,从 5.4 开始,短回声 (&lt;?=) 不属于 short_open_tag。它始终可用,并且不是弃用的一部分。

https://wiki.php.net/rfc/shortags

【讨论】:

  • 第二个 RFC 没有通过,所以我从答案中删除了那个位。第一个 RFC 被忽略,没有任何改变。
【解决方案2】:

PHP7 中的简写标签仍在,被移除的标签有:

  • &lt;% opening tag
  • &lt;%= opening tag with echo
  • %&gt; closing tag
  • (&lt;script\s+language\s*=\s*(php|"php"|'php')\s*&gt;)i opening tag
  • (&lt;/script&gt;)i closing tag

https://wiki.php.net/rfc/remove_alternative_php_tags

【讨论】:

    【解决方案3】:

    是否加载了正确的 php.ini?

    <?php phpinfo(); ?>
    

    检查加载的配置文件

    【讨论】:

    • 好吧,我有点尴尬,似乎我的机器上安装了 2 次 php,一次使用 phpstorm,另一次使用 Laragon,我编辑错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2019-03-21
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多