ヒアドキュメントとNowdoc

ヒアドキュメント

改行を含むような長い文字列を表す場合ヒアドキュメントという表記を使います。以下のように記述します。

<?php
$age = 20;
$data = <<<EOD
私の年齢は{$age}歳です。<br>
"職業は無職です!"
EOD;
print $data;

//↓表示結果
//私の年齢は20歳です。
//"職業は無職です!"
?>

<<<EODからEOD;までの間が文字列リテラルとなっているのです。EODの文字は何でもいいのですが一般的にEODが使われます。(End of Dataの略)

変数のパース処理が行われていることから、ダブルクォーテーションで囲まれている文字列として認識されていることがわかります。

Nowdoc

Nowdocとは、使い方はヒアドキュメントと似てますが、異なる点があり、シングルクォーテーションで囲まれている文字列として認識されます。以下のように記述します。

<?php
$age = 20;
$data =   <<<'EOD'  
私の年齢は{$age}歳です。<br>
"職業は無職です!"
EOD;
print $data;

//↓表示結果
//私の年齢は{$age}歳です。
//"職業は無職です!"
?>

シングルクォーテーションとしての文字列なので変数がそのまま出力されます。コードのコメントに書いてあるように’EOD’とシングルクォーテーションで囲っています。

まとめ

  • 改行を含むような長い文字列を扱うとき、ヒアドキュメントやNowdocを使用する。
  • <<<EODで始まりEOD;で終わる。(EODは任意の文字でいい)
  • NowdocはEODの部分をシングルクォーテーションで囲む。
  • ヒアドキュメントはダブルクォーテーション、Nowdocはシングルクォーテーションで囲んだ文字列として認識される。

コメント

タイトルとURLをコピーしました