2013-01-08 56 views
1

我发现这个PHP代码片段:什么是和如何使用'<<< END_JAVASCRIPT'字符串?

$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中出现了一个解析错误('unexpected $ end')。

UPDATE: 原因我正在解析错误是,我缩进代码(包括结束标识符“END_JAVASCRIPT”)。 PHP的heredoc文档包含以下警告:

需要注意的是结束标识符的行必须包含任何其它字符,除了可能分号是很重要的()。这意味着特别是标识符可能不会缩进,并且在分号之前或之后可能没有任何空格或制表符。认识到关闭标识符之前的第一个字符必须是由本地操作系统定义的换行符也很重要。

+1

http://php.net/manual/en/language.types.string.php –

回答

2

这是heredoc syntax。对于输出大块HTML非常有用,尤其是当您包含PHP变量值时,因为它们会像使用双引号时那样进行解释,但是对于heredoc,您不必转义双引号。

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

狠抓收盘ARBITRARY_STRING;路线,必须是由本身就是一个线不能有任何空格在其开始或分号之后。

3

这是heredoc string literal syntax<<<SOMETHING开始一个很长的多行字符串,并且SOMETHING;在它自己的行上结束字符串。

您得到语法错误的原因可能是因为您缩进了END_JAVASCRIPT;部分。它必须在一条线的最开始。

相关问题