1

我找到了这个 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' 字符串(?)是什么以及应该如何以及何时使用?PS 我尝试运行此代码段,但在 PHP 中出现解析错误('unexpected $end')。

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

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


VS 2010 不用于编译和构建驱动程序。但是,Visual Studio 2012 具有此功能。

在VS 2012之前,你需要使用WinDDK来构建驱动(我不确定你现在是否可以下载它)。

4

2 回答 2

3

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

您收到语法错误的原因可能是因为您缩进了该END_JAVASCRIPT;部分。它必须在一行的开头。

于 2013-01-08T04:37:00.523 回答
2

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

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

密切注意结束ARBITRARY_STRING;行,in 必须单独一行,并且在其开头或分号之后不能有任何空格。

于 2013-01-08T04:37:13.827 回答