What is and how to use the '<<<END_JAVASCRIPT&#


What is and how to use the '<<<END_JAVASCRIPT' string?

我找到了以下php代码片段:

$sJavascript = <<<END_JAVASCRIPT
var callback = arguments[arguments.length-1], 
nIntervalId; 
function checkDone() {
  if( window.MY_STUFF_DONE ) {
    window.clearInterval(nIntervalId); // stop polling
    callback("done"); // return "done" to PHP code
  }
}
nIntervalId = window.setInterval( checkDone, 50 ); // start polling
END_JAVASCRIPT;
$sResult = $session->execute_async(array(
  'script' => $sJavascript,
  'args' => array(),
 ));

什么是'END_JAVASCRIPT'字符串(?)和如何以及何时应该使用?P.S.我试图运行这个片段,但我在PHP中得到一个解析错误('意外的$end')。

更新:我得到解析错误的原因是我缩进了代码(包括结束标识符'END_JAVASCRIPT')。PHP heredoc文档包含以下警告:

非常重要的是要注意,具有结束标识符的行必须不包含其他字符,除了可能一个分号(;)。这尤其意味着标识符不能缩进,分号前后不能有任何空格或制表符。同样重要的是要意识到,结束标识符之前的第一个字符必须是本地操作系统定义的换行符。

这是heredoc字符串字面语法。<<<SOMETHING开始一个长多行字符串,SOMETHING;在自己的行结束字符串。

你得到一个语法错误的原因可能是因为你缩进END_JAVASCRIPT;部分。必须在行首

语法如下。对于输出大块HTML非常有用,特别是当您包含PHP变量值时,因为它们被解释为使用双引号时所做的,但是使用heredoc您不必转义双引号。

$str = "foo";
echo <<< ARBITRARY_STRING
    <span class="blah">This is the $str var</span>
ARBITRARY_STRING;

请密切注意ARBITRARY_STRING;的结束行,它必须单独在一行上,并且在其开始处或分号之后不能有任何空白。