【问题标题】:What is and how to use the '<<<END_JAVASCRIPT' string?'<<<END_JAVASCRIPT' 字符串是什么以及如何使用?
【发布时间】:2013-01-08 04:35:01
【问题描述】:

我为 php 找到了这段代码 sn-p:

$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' 字符串(?)是什么?应该如何以及何时使用? 附:我试图运行这个 sn-p,但我在 PHP 中得到一个解析错误('unexpected $end')。

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

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

【问题讨论】:

标签: php


【解决方案1】:

这是heredoc string literal syntax&lt;&lt;&lt;SOMETHING 开始一个长的多行字符串,SOMETHING; 在自己的行上结束该字符串。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      相关资源
      最近更新 更多