无效的正文缩进级别(期望缩进级别至少为 4)
Invalid body indentation level (expecting an indentation level of at least 4)
我刚刚升级到 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 7.3 中的新 flexible Heredoc syntaxes 引起的。
在PHP之前的版本中,结束标记不允许有缩进:
$string = <<<EOF
Hello
EOF;
从 PHP 7.3 开始,结束标记可以缩进。
在此示例中,EOF
缩进了 4 个空格。 字符串的主体也将从每行的开头删除 4 个空格。
$string = <<<EOF
Hello
EOF;
如果结束标记的缩进比正文的任何行都多,则会抛出解析错误:
$string = <<<EOF
Hello
EOF;
错误消息的原因有两个:
- 结束标记在正文中缩进超过 1 行或多行
但对于那些升级到 PHP 7.3 的人来说,可能更有可能:
- 我选择了字符串中也存在的标记
HTML
。由于现在允许灵活的间距,PHP 错误地检测到字符串在我预期之前已经闭合。
结束“输出”的缩进有类似问题;是个问题。左边不留space
$html = <<<HTML
<html>
<body>
HTML test
</body>
</html>
OUTPUT; // leave no space on the left before the code
echo $html;
}
我刚刚升级到 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 7.3 中的新 flexible Heredoc syntaxes 引起的。
在PHP之前的版本中,结束标记不允许有缩进:
$string = <<<EOF
Hello
EOF;
从 PHP 7.3 开始,结束标记可以缩进。
在此示例中,EOF
缩进了 4 个空格。 字符串的主体也将从每行的开头删除 4 个空格。
$string = <<<EOF
Hello
EOF;
如果结束标记的缩进比正文的任何行都多,则会抛出解析错误:
$string = <<<EOF
Hello
EOF;
错误消息的原因有两个:
- 结束标记在正文中缩进超过 1 行或多行
但对于那些升级到 PHP 7.3 的人来说,可能更有可能:
- 我选择了字符串中也存在的标记
HTML
。由于现在允许灵活的间距,PHP 错误地检测到字符串在我预期之前已经闭合。
结束“输出”的缩进有类似问题;是个问题。左边不留space
$html = <<<HTML
<html>
<body>
HTML test
</body>
</html>
OUTPUT; // leave no space on the left before the code
echo $html;
}