1

在 PHP 中玩弄 heredocs,我意识到 heredoc 的名称不必是唯一的。因此:

$a = <<<EOD
Some string
EOD;

$b = <<<EOD
A different string
EOD;

是正确的并且行为完全符合您的预期。

出于某种原因,这是不好的做法吗?为什么heredoc根本需要名称/标签(EOD上面),因为您不能通过名称引用它?

4

3 回答 3

3

如果您指定的字符串包含EOD怎么办?

您可以选择标识符以避免与您用作字符串的文本块发生冲突。

于 2010-01-27T00:02:33.463 回答
2

您不会这样引用它,但它充当标识符以指示heredoc 的结束。例如

$a = <<<EOD
EOA
EOB
EOC
EOD;
于 2010-01-27T00:02:25.710 回答
1

一个好处是,像 vim 这样的编辑器可以对以 HTML、EOHTML、EOSQL、EOJAVASCRIPT 命名的 heredocs 应用语法突出显示,从而使它们更易于使用...

$html = <<<EOHTML

<p class="foo">foo</em>

EOHTML;

$sql = <<<EOSQL

SELECT DISTINCT(name) FROM foo ORDER BY bar;

EOSQL;

$js = <<<EOJAVASCRIPT

foo = { bar: 'bar'; }

EOJAVASCRIPT;
于 2010-03-05T19:50:17.863 回答