3

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

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

这是代码:

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

2 回答 2

8

这是由PHP 7.3 中新的灵活 Heredoc 语法引起的。

在以前的 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 错误地检测到字符串在我预期之前已经关闭。
于 2019-04-04T19:14:43.133 回答
0

关闭“输出”的缩进也有类似的问题;是一个问题。左边不要留空间。

    $html = <<<HTML
      <html>
       <body>
         HTML test
       </body>
      </html>
    OUTPUT;        // leave no space on the left before the code
    echo $html;
    }
于 2022-02-19T10:08:59.933 回答