解 説

ヒアドキュメントは長い文字列をechoで書き出すときに使用すると便利な仕組みです。
例えばHTML文をdoctypeからhtmlの終了タグまでをPHPの中でまとめて書き出したい場合などです。
ヒアドキュメントを使用することで属性値に使用される「”」の扱いに苦慮することがなくなります。

ヒアドキュメントの書き方

<<< 識別子
<<<と識別子の間には1つ以上の空白が必要です。
終了部分には、その行には識別子だけ記述してそれ以外は記述してはいけません。ただし、例外的にセミコロン「;」をつけることだけが許されています。つまり後になんらかの文が続かなければセミコロンは不要です。
heardoc

サンプル1:単純なヒアドキュメントの例

<?php
echo <<< END_DOC
	<p class="lead">ヒアドキュメントのテストサンプルです。</p>
END_DOC
?>

END_DOCの後にセミコロンはありませんが、エラーにはなりません。

今度のコードはエラーになります。

<?php
echo <<< END_DOC
	<p class="lead">ヒアドキュメントのテストサンプルです。</p>
END_DOC
echo "<p>追加のechoで表示</p>";
?>

上記のコードの違いはヒアドキュメントとは別にそこにセミコロンが必要かどうかということです。1の場合はPHP文がEND_DOCで完結しているので不要です。エラーになるコードの場合は再びechoが使われていますので、END_DOCの後にセミコロンが必要だということです。つまり最後の識別子のあとにセミコロンはあっても無くてもどちらでもOKです。前後の文から必要なら使用して必要でなければ(あってはならない場合)付けないで終わらせることができます。

サンプル3:識別子のあとにセミコロンを付けた例

<?php
echo <<< END_DOC
	<p class="lead">ヒアドキュメントのテストサンプルです。</p>
END_DOC;
echo "<p>追加のechoで表示</p>";
?>

サンプル4:変数を展開する例
ヒアドキュメントはダブルクオテーションを使用したときと同様に変数を展開することができます。
PHPに変数と認識させるために{}で変数を囲むと良いでしょう。

<?php
$str = "テストサンプル";
echo <<< END_DOC
	<p class="lead">ヒアドキュメントの{$str}です。</p>
END_DOC;
echo "<p>追加のechoで表示</p>";
?>