PHP heredoc语法

时间:2012-07-13 09:23:52

标签: php heredoc

我想知道是否:

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

一样有效
$foo = <<<EOT
Hello, World!
EOT;

,特别是在所有版本的PHP(或者只是最新的版本)中是否都适用。

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

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

3 个答案:

答案 0 :(得分:5)

允许使用标签和空格,显然也是引号:

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

Source

编辑:

  • 至少2001
  • 允许使用标签和空格
  • 引号已添加到2008

答案 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