私は非常に多くの方法で書かれた PHP ページ内に HTML がネストされているのを見てきました 。 -php/
しかし...次のようにHTMLとPHPが一斉に書かれていることはめったにありません。
echo <<<EOF
<h1>Welcome</h1>
<p>Hello</p>
<p>{$somePHPVariable}</p>
EOF;
質問:
EOF アプローチを使用する際に知っておくべき基本的な問題はありますか?
これはヒアドキュメント構文と呼ばれます(「EOF」は「EOF」だけでなく、任意の識別子にすることができます)。これは、他の文字列構文よりも少し扱いが難しく、これまでに遭遇したことがない人にとっては少し混乱する可能性があります。しかし、使用するのは完全に問題ありません。
HTML を作成していて、変数を埋め込む必要がある場合、ヒアドキュメントはすばらしいものです。
それらは、埋め込まれた改行/間隔を尊重するため (ブラウザーがそれを表示しない場合でも)、適切にフォーマットされた HTML を作成するのがはるかに簡単になり、文字列を作成するときに引用符をエスケープする必要がなくなります。
例:比較
print("<div class=\"this\">\n\tblah blah\n\t\t<span class=\"that\">blah</span>\n</div>");
対
echo <<<EOL
<div class="this">
blah blah
<span class="that"</span>
</div>
EOL;
それらは、連結操作でも使用できます。
$x = "hello";
$x .= <<<EOL
there, how
EOL
$x .= <<<EOL
are you?
EOL;
は最終的に $x に value を与えますhello there, how are you?
。基本的に、ヒアドキュメント構文は、二重引用符で囲まれた文字列の非常に洗練されたバージョンであり、欠点はまったくないと考えてください。唯一の制限は、ヒアドキュメントのセンティナル値はそれ自体で 1 行になければならないということです。そのため、「1 行」のヒアドキュメントを作成する方法はありません。
ヒアドキュメント構文は実際に素晴らしいです! 単一引用符と二重引用符がたくさんあるデータがある場合に非常に便利です。
詳細については、前にここで説明しました: 引用符を引用する
私が見つけた欠点の 1 つは、エディターで構文の強調表示を無効にする傾向があることです。これは、エディターが構文を 1 つの大きな文字列と見なし、内部の html を適切に強調表示しないためです。
もう 1 つの欠点は、ヒアドキュメント構文内から関数を直接呼び出すことができないことです。回避策があり、そのうちのいくつかをここで説明します: HEREDOC 文字列内での PHP 関数の呼び出し