ヒアドキュメント構文とNowdoc構文は似てるんですけど、どちらも簡単に言えば長い文章の文字列を扱うときに便利です。
手紙のような長い文章だけでなく、HTMLをPHPの文字列として記述して後に出力するときにも使えます。
とは言ってもぶっちゃけ僕は全然使いません。
使っているところを見ることもほとんどありません。
でも、見かけたときに「なんだこれ?」ってなるので知ってはおきましょう。
ヒアドキュメント構文
ヒアドキュメントを使う目的
先にもお伝えしましたが、長い文字列を扱うときに便利です。
特にHTMLを出力するときに便利かなと思います。
何故かと言うと、”(ダブルコーテーション) や ‘(シングルコーテーション)をエスケープせずにそのまま書けるためです。
HTMLタグ内には ” や ‘ がたくさん出てくるのでそれをいちいちエスケープするのは面倒です。
ヒアドキュメントの書き方
$name = "近松";
$str = <<<EOD
こんにちは。{$name}です。
"りんご"はアレルギーで食べれません。
EOD;
このように書きます。
[aside type=”normal”]$変数 = <<<識別子
文字列
識別子;[/aside]
といった形になります。
識別子はEODと書きましたが End Of Document の略です。
他にもEOT(End Of Text)、EOF(End Of File)、ENDなどがあります。
と言ってもAでもBでもzなどの小文字でもいいです。>>>の後に書かれる識別子と最後の ; の前に書かれる識別子が同じならばいいです。
ただ、a とかだと文中に現れる可能性があるので使わないのが無難です。
ヒアドキュメントは文中に変数も入れれる
これもヒアドキュメントのメリットの一つでしょう。
上のサンプルの {$name} のように文中に変数を入れることが出来ます。
ただ、これは普通の文字列も同じです。
{ } は無くても問題ないですが、後にスペースを入れるなどしないと文字と変数の境目が分からないため { } をつけて変数を差し込むのが無難です。
Nowdoc構文
Nowdoc構文はヒアドキュメントとほぼほぼ同じです。
$name = "近松";
$str = <<<'EOT'
こんにちは。{$name}です。
"りんご"はアレルギーで食べれません。
EOT;
<<<の後に書く識別子を ‘(シングルコーテーション)で囲むだけです。
違いは、文中に変数を代入できないことです。
上のコードを出力すると、
こんにちは。{$name}です。
"りんご"はアレルギーで食べれません。
のように {$name} がそのまま出力されてしまいます。
これ以外は確かヒアドキュメントとの違いはないです。
まとめ
ヒアドキュメント構文とNowdoc構文は長い文字列を扱うときに使います。
文中に”や’をそのまま書いてエスケープしなくてもそのまま使えます。
HTML文をPHP内で書くときに便利です。
でも、あまり使わないです・・・










コメント