PHP 速记标签 7.x

PHP Short hand tags 7.x

只是想知道,有人要求我做一些工作,我有一个 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

中有短标签

Shorthand 标签仍​​在 PHP7,被删除的标签是:

  • <% opening tag
  • <%= opening tag with echo
  • %> closing tag
  • (<script\s+language\s*=\s*(php|"php"|'php')\s*>)i opening tag
  • (</script>)i closing tag

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

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

<?php phpinfo(); ?>

检查加载的配置文件

重要更新:

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

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


原文Post:

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

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

此外,从 5.4 开始,短回显 (<?=) 不再是 short_open_tag 的一部分。它始终可用,不属于弃用的一部分。

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