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

ヒアドキュメント構文と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内で書くときに便利です。

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

この記事を書いた人

ライターのプロフィールが入ります。このライター情報を入れたくない場合は管理画面の ユーザー > あなたのプロフィールの「プロフィール情報」を未入力にすれば表示されません。逆に「プロフィール情報」を入力することでライター情報を表示できます。

コメント

コメントする

CAPTCHA


目次
閉じる