无效的身体缩进级别(预计缩进级别至少为4)

时间:2019-04-04 19:14:24

标签: php heredoc php-7.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;

1 个答案:

答案 0 :(得分: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错误地检测到字符串在我意图之前已关闭。