2012-05-01 21 views
2

我見過HTML嵌套寫在很多方面......其中一些在此頁面演示了PHP頁面中: 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

[定界符](http://en.wikipedia.org/wiki/Here_document) –

+0

退房http://stackoverflow.com/questions/5673269/is-there-a-reason-to-use-heredoc-在PHP中 - 它應該回答你的問題。 – Crontab

回答

5

如果您正在構建HTML並需要嵌入變量,Heredocs是美好的。

他們尊重您在其中嵌入的換行符/間距(即使瀏覽器不顯示),因此構建格式良好的HTML更容易,並且還可以減輕構建字符串時需要跳過引號的需求:

eg比較

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的最終價值必須獨立存在,所以沒有辦法構建heredoc的「一條線」。

+0

這本身就是一個比其他方法更大的優勢:) – Jack

5

這稱爲heredoc syntax(「EOF」可以是任何標識符,而不僅僅是「EOF」)。它比其他字符串語法更挑剔一點,對於之前沒有遇到過的人來說可能會有些困惑。不過,使用完美無瑕。

2

Heredoc語法其實很棒!這對於您有大量單引號和雙引號數據的情況非常有用。

我已經去到了一些它的細節之前在這裏: Quoting quotation marks

其中一個缺點吧,我覺得的是,它往往以禁用語法高亮的編輯,因爲編輯器將其視爲一個大字符串,因此不會正確地突出顯示HTML裏面。

另一個缺點是無法從heredoc語法中直接調用函數。有解決方法,其中幾個在這裏提到:Calling PHP functions within HEREDOC strings

+1

語法突出顯示有問題 - 並且終端令牌必須左對齊才能工作的事實否則美麗的代碼=( –