【问题标题】:Invalid body indentation level (expecting an indentation level of at least 4)无效的正文缩进级别(期望缩进级别至少为 4)
【发布时间】:2019-08-26 15:36:49
【问题描述】:

我刚刚升级到 PHP 7.3,我收到了这个错误:

Invalid body indentation level (expecting an indentation level of at least 4)

代码如下:

    $html = <<<HTML
<html>
<body>
    HTML test
</body>
</html>
HTML;

【问题讨论】:

  • 这里的答案可能会更好:stackoverflow.com/questions/12769982/…
  • @miken32 对此一无所知,谢谢。我唯一的想法是,由于语法更改,很多人在升级到 PHP 7.3 时可能会特别看到这一点。所以它非常特定于版本

标签: php heredoc php-7.3


【解决方案1】:

这是由 PHP 7.3 中的新 flexible Heredoc syntaxes 引起的。

在以前的 PHP 版本中,结束标记不允许有缩进:

    $string = <<<EOF
Hello
EOF;

从 PHP 7.3 开始,结束标记可以缩进。

在本例中,EOF 缩进了 4 个空格。 字符串的主体也会从每行的开头去掉 4 个空格。

    $string = <<<EOF
    Hello
    EOF;

如果结束标记的缩进比正文的任何​​行都远,则会抛出 Parse 错误:

    $string = <<<EOF
  Hello
    EOF;

错误信息的原因有两个:

  • 结束标记在正文中缩进超过 1 行或多行

但对于那些升级到 PHP 7.3 的用户来说,可能性更大:

  • 我选择了一个标记HTML,它也出现在字符串中。由于现在允许灵活的间距,PHP 错误地检测到字符串在我预期之前已经关闭。

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2011-07-27
    • 1970-01-01
    • 2011-10-14
    • 2012-07-24
    • 2015-08-05
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多