ヒアドキュメント構文とNowdoc構文

ヒアドキュメント構文とNowdoc構文は似てるんですけど、どちらも簡単に言えば長い文章の文字列を扱うときに便利です。

手紙のような長い文章だけでなく、HTMLをPHPの文字列として記述して後に出力するときにも使えます。

とは言ってもぶっちゃけ僕は全然使いません。

使っているところを見ることもほとんどありません。

でも、見かけたときに「なんだこれ?」ってなるので知ってはおきましょう。

ヒアドキュメント構文

ヒアドキュメントを使う目的

先にもお伝えしましたが、長い文字列を扱うときに便利です。

特にHTMLを出力するときに便利かなと思います。

何故かと言うと、”(ダブルコーテーション) や ‘(シングルコーテーション)をエスケープせずにそのまま書けるためです。

HTMLタグ内には ” や ‘ がたくさん出てくるのでそれをいちいちエスケープするのは面倒です。

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

このように書きます。

$変数 = <<<識別子
文字列
識別子;

といった形になります。

識別子はEODと書きましたが End Of Document の略です。

他にもEOT(End Of Text)、EOF(End Of File)、ENDなどがあります。

と言ってもAでもBでもzなどの小文字でもいいです。>>>の後に書かれる識別子と最後の ; の前に書かれる識別子が同じならばいいです。

ただ、a とかだと文中に現れる可能性があるので使わないのが無難です。

ヒアドキュメントは文中に変数も入れれる

これもヒアドキュメントのメリットの一つでしょう。

上のサンプルの {$name} のように文中に変数を入れることが出来ます。

ただ、これは普通の文字列も同じです。

{ } は無くても問題ないですが、後にスペースを入れるなどしないと文字と変数の境目が分からないため { } をつけて変数を差し込むのが無難です。

Nowdoc構文

Nowdoc構文はヒアドキュメントとほぼほぼ同じです。

<<<の後に書く識別子を ‘(シングルコーテーション)で囲むだけです。

違いは、文中に変数を代入できないことです。

上のコードを出力すると、

のように {$name} がそのまま出力されてしまいます。

これ以外は確かヒアドキュメントとの違いはないです。

まとめ

ヒアドキュメント構文とNowdoc構文は長い文字列を扱うときに使います。

文中に”や’をそのまま書いてエスケープしなくてもそのまま使えます。

HTML文をPHP内で書くときに便利です。

でも、あまり使わないです・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA