4

我想知道是否:

$foo = <<< EOT
Hello, World!
EOT;

$foo = <<<EOT
Hello, World!
EOT;

特别是在所有版本的 PHP(或只是最新版本)中是否都是如此。

我想知道,因为我想知道第一个标识符<<<和第一个EOT标识符之间的空格在语法上是否有效。例如,我的 PHP 解释器 5.3.10 可以正确运行它,但我的 vim 文本编辑器不会以相同的方式语法高亮 heredoc,如果和之间有空格<<<EOT标识符EOT是白色而不是紫色)。

那么这里的交易是什么?在所有版本的 PHP 中都合法吗?

4

3 回答 3

5

允许使用制表符和空格,引号显然也是如此:

<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} {

来源

编辑:

于 2012-07-13T09:29:50.053 回答
3

手册说(强调我的)

第三种分隔字符串的方法是 heredoc 语法:<<<。在此运算符之后,提供一个标识符,然后是一个换行符。

对我来说,这意味着空格是可选的(并且始终是可选的),因为在整个语言中,标识符可以通过任意数量的空格与相邻的标记分开——包括没有空格。

于 2012-07-13T09:31:01.630 回答
0

不,您不应该在 <<< 和标识符之间提供空格。如 PHP 文档中所述:

(...) 标识符必须遵循与 PHP 中任何其他标签相同的命名规则:它必须只包含字母数字字符和下划线,并且必须以非数字字符或下划线开头

来源:http ://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2012-07-13T09:29:34.360 回答