我想知道是否:
$foo = <<< EOT
Hello, World!
EOT;
和
一样有效$foo = <<<EOT
Hello, World!
EOT;
,特别是在所有版本的PHP(或者只是最新的版本)中是否都适用。
我想知道,因为我想知道<<<
和第一个EOT
标识符之间的空格是否在语法上有效。例如,我的PHP解释器5.3.10运行正确但是
如果有的话,我的vim文本编辑器不会以相同的方式突出显示heredoc
<<<
和EOT
之间的空格(EOT
标识符为白色而非紫色)。
那么这里的交易是什么?在所有版本的PHP中是否合法?
答案 0 :(得分:5)
允许使用标签和空格,显然也是引号:
<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}({LABEL}|([']{LABEL}['])|(["]{LABEL}["])){NEWLINE} {
编辑:
答案 1 :(得分:3)
手册说(强调我的)
分隔字符串的第三种方法是heredoc语法:&lt;&lt;&lt;。 在此之后 运算符,提供标识符,然后换行。
对我而言,这意味着该空间是可选的(并且始终是可选的),因为在整个语言中,标识符可以通过任意数量的空格与相邻标记分开 - 包括无空格。
答案 2 :(得分:-1)
不,你不应该在&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;和标识符。正如PHP文档中所指定的那样:
(...)标识符必须遵循与PHP中任何其他标签相同的命名规则:它必须仅包含字母数字字符和下划线,并且必须以非数字开头字符或下划线。
来源:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc