PHPでヒアドキュメントをいじってみると、ヒアドキュメントの名前は一意である必要はないことに気づきました。したがって:
$a = <<<EOD
Some string
EOD;
$b = <<<EOD
A different string
EOD;
正しく、期待どおりに動作します。
これは何らかの理由で悪い習慣ですか?EOD
名前で参照できないのに、なぜヒアドキュメントに名前/ラベル(上記)が必要なのですか?
指定している文字列に含まれている場合はどうなりますEOD
か?
文字列として使用しているテキストのチャンクとの競合を回避するために、識別子を選択できます。
そのように参照することはありませんが、ヒアドキュメントの終わりを示す識別子として機能します。例えば
$a = <<<EOD
EOA
EOB
EOC
EOD;
1つの利点は、vimのようなエディターが、HTML、EOHTML、EOSQL、EOJAVASCRIPTで名前が付けられたヒアドキュメントに構文の強調表示を適用できることです。
$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;