PHP基礎構文 ヒアドキュメントとNowdocの構文と違いについて


TL;DR

  • 基礎構文の1つでもあるヒアドキュメントNowdocの構文に関して
  • 基本的にヒアドキュメントで事足りる印象
  • 適切さでいうと、変数展開を利用しないのであれば、Nowdocを利用すべきなのかもしれない

ヒアドキュメントとは

文字列を変数に代入、または出力するために利用する機能
機能の特徴柄、主に長い文字列の代入・出力のために利用する事が一般的な利用方法

ヒアドキュメント構文

$text = 'hello';
echo <<< EOL
input text.
{$text}
EOL;

/*
 * 出力結果
 *
 * input text.
 * hello
 */

Nowdoc構文

$text = 'hello';
echo <<< 'EOL'
input text.
{$text}
EOL;

/*
 * 出力結果
 *
 * input text.
 * {$text}
 */

構文の違い

1. エンドトークンにクォートがついてるかどうか

  • ついてるのが、ヒアドキュメント
  • ついていないのが、Nowdoc

エンドトークンとは

  • EOLなどの特定の文字列を指す
  • 例文に利用してるEOL以外にも下記ものも利用できる
    • EOD
      • End Of Documentの略
    • EOF
      • End Of Fileの略
    • EOS
      • End Of Sentenceの略
    • EOT
      • End Of Textの略
    • EOL
      • End Of Lineの略

※利用するエンドトークンは同じである必要がある。
例えば、開始のエンドトークンにEOL、終わりのエンドトークンにEOD、などは利用できない

2. 変数展開ができるかどうか

  • できるのが、ヒアドキュメント
  • できないのが、Nowdoc