2016/12/16
ヒアドキュメントの名称も書き方もよく忘れるのでやっぱり思え書に。
PHPでHTML部分とPHPのプログラム部分が混じるとダブルクォーテーションの処理やら変数の処理が面倒なのです。このような場合ヒアドキュメントが便利です。
<?php
$address="http://yahoo.co.jp";
print "<a href=\"$address\">ヤフー</a>";
?>
あんまり面倒ではないか。でもこれを
<?php
$address="http://yahoo.co.jp";
print <<< EOD
<a href="$address">ヤフー</a>
EOD;
?>
のように書くこともできます。printはechoでも大丈夫です。PHPの中に普通のHTMLが書けます。さらにPHPの変数がそのまま書けます。ヒアドキュメント内は行末のセミコロンもいりません。便利な気がしますね。こんな感じのPHPならHTMLわかる人なら結構簡単に編集できると思います。好みにもよりますが変数部分を{}で囲んでおいてあげると{}は触らないでね、とかでPHPerとHTMLらー(?)の分業できませんかね?
<a href="{$address}">ヤフー</a>
EODの文字列は決まっているわけではなく慣習的に使っているだけで End Of Document の頭文字らしいです。 End Of Dataのような気も。EOF(End Of File) とかも見かけますね。ただ間違いやすい注意点としましてははじめのprint <<< EODの後ろのセミコロンがなくて最後のEODにセミコロンが必要です。
さらに、php.netには当然のように書かれていますが、他サイトでは当たり前すぎてなのかどうかあまり書かれていないですが最後のEODは行頭に書いてください。コーディングルールに基づいてインデントしてしまうとエラーになります。スペースもタブもダメです。左端にくっつけてください。初めのprint <<< EODはインデントしても構いません。途中のHTML部分も構いません。最後のEOD;だけは左端詰めです。ですから多くの例文はすべての行が左端詰めになっているようです。難しいことも書いてありますが、詳しくはやっぱりphp.netですね。