2012-05-01 6 views
2
私は、このページで実証されているそのうちのいくつかは非常に多くの方法...で書かれたPHPページ内にネストされたHTMLを見てきました

http://austingulati.com/2010/01/many-ways-to-integrate-html-into-php/EOFを使用する際の短所はありますか?

しかし...私は非常にまれと一斉に書かれたHTMLやPHPを見ません次の:

echo <<<EOF 
<h1>Welcome</h1> 
<p>Hello</p> 
<p>{$somePHPVariable}</p> 
EOF; 

質問:

私が知っておくべきEOFのアプローチを使用したとの根本的な問題がありますか?

+1

[Heredoc](http://en.wikipedia.org/wiki/Here_document) –

+0

http://stackoverflow.com/questions/5673269/is-there-a-reason-to-use-heredoc- in-php - あなたの質問に答えるべきです。 – Crontab

答えて

5

HTMLをビルドして変数を埋め込む必要がある場合、Heredocsはすばらしいです。

(ブラウザに表示されていない場合でも)その中に埋め込んだ改行/スペーシングを受け入れることで、整形されたHTMLを作成しやすくなり、文字列を作成するときに引用符をエスケープする必要がなくなります。

比較

print("<div class=\"this\">\n\tblah blah\n\t\t<span class=\"that\">blah</span>\n</div>"); 

v.s.

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に値hello there, how are you?を与えます。基本的に、heredocの構文は、二重引用符で囲まれた文字列の非常に優れたバージョンであるとみなされますが、欠点はありません。唯一の制限は、heredocのsentinal値が単独で行になければならないということです。したがって、 "1行" heredocを作成する方法はありません。

+0

それは他のアプローチよりも大きな利点です:) – Jack

5

これはheredoc syntaxと呼ばれます(「EOF」は「EOF」だけでなく任意の識別子です)。それは他の文字列の構文よりも少し面倒です。以前に遭遇したことのない人にとっては少し混乱するかもしれません。しかし、使用するには完璧にうまくいく。

2

実際にはHeredoc構文は素晴らしいです!これは、一重引用符と二重引用符がたくさんあるデータがある状況で非常に便利です。私はここの前にそれの詳細のいくつかに行ってきた

:私は見つけることに欠点の Quoting quotation marks

一つエディタが1としてそれを見ているので、それはエディタで構文強調を無効にする傾向があるということです大きな文字列であるため、html内を適切に強調表示しません。

もう一つの欠点は、heredoc構文内から関数を直接呼び出すことができないことです。回避策があり、そのうちのいくつかがここに記載されています:Calling PHP functions within HEREDOC strings

+1

シンタックスのハイライト表示に問題があります。そして、ターミナルトークンを作業のために左揃えにしなければならないという事実は、そうでなければ美しいコード=( –

関連する問題