无效的体缩进级别(期望缩进级别至少为4)

问题描述 投票:1回答:1

我刚刚升级到PHP 7.3,我收到此错误:

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

这是代码:

    $html = <<<HTML
<html>
<body>
    HTML test
</body>
</html>
HTML;
php heredoc php-7.3
1个回答
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在我打算之前错误地检测到字符串已关闭。
© www.soinside.com 2019 - 2024. All rights reserved.