ヒアドキュメント (Here document)

複数行にわたるテキストを簡単に記述できます。

echo <<<EOM
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
EOM;

文字列中には変数も含められ、上記では$variableがそれです。この変数が展開される規則は、二重引用符の構文に従います。

結果のテキストを変数に代入するには、同様に

$str = <<<EOM
Example of string
spanning multiple lines
using heredoc syntax.
EOM;

とします。

識別子 (上記の例ではEOM) は、ラベルの命名規則に従った任意の文字で指定します。なお識別子の前後には、空白やタブがあってはなりません。

位置 構文
始端
<<<識別子[改行文字]
終端
[改行文字]識別子;[改行文字]
ヒアドキュメント構文 - PHP: 文字列 - Manual

Nowdoc

変数を含まずパース処理が不要ならば、ヒアドキュメントではなくNowdocを使用します。Nowdocの文章中では、すべてただの文字列として扱われます。このことを文字列リテラルと比較すると、

  • ヒアドキュメント … 二重引用符 (") で囲まれた文字列
  • Nowdoc … 引用符 (') で囲まれた文字列

のように対応します。

Nowdocとするには、ヒアドキュメントの始端の識別子をシングルクォート ( ' ) で囲みます。それ以外はヒアドキュメントと同様の構文です。

echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
Nowdoc - PHP: 文字列 - Manual