我找到了以下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;
的结束行,它必须单独在一行上,并且在其开始处或分号之后不能有任何空白。