在 PHP 中玩弄 heredocs,我意识到 heredoc 的名称不必是唯一的。因此:
$a = <<<EOD
Some string
EOD;
$b = <<<EOD
A different string
EOD;
是正确的并且行为完全符合您的预期。
出于某种原因,这是不好的做法吗?为什么heredoc根本需要名称/标签(EOD
上面),因为您不能通过名称引用它?
如果您指定的字符串包含EOD
怎么办?
您可以选择标识符以避免与您用作字符串的文本块发生冲突。
您不会这样引用它,但它充当标识符以指示heredoc 的结束。例如
$a = <<<EOD
EOA
EOB
EOC
EOD;
一个好处是,像 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;