使用EOF的缺点?

时间:2012-05-01 20:42:09

标签: php html

我已经看到HTML嵌套在以多种方式编写的PHP页面中......其中一些在本页面中展示: http://austingulati.com/2010/01/many-ways-to-integrate-html-into-php/

但是......我很少看到HTML和PHP一起编写如下:

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

问题:

使用EOF方法是否存在我应该注意的基本问题?

3 个答案:

答案 0 :(得分:5)

这称为heredoc syntax(“EOF”可以是任何标识符,而不仅仅是“EOF”)。它比其他字符串语法更挑剔,对于之前没有遇到它的人来说可能有点混乱。但是,使用起来非常好。

答案 1 :(得分:5)

如果您正在构建HTML并且需要嵌入变量,那么Heredocs非常棒。

他们尊重您嵌入其中的换行符/间距(即使浏览器没有显示),因此构建格式良好的HTML更容易,并且还可以减轻构建字符串时转义引号的需要:< / p>

e.g。比较

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值必须单独在一条线上,因此没有办法制作“一行”heredoc。

答案 2 :(得分:2)

Heredoc语法实际上很棒!它对于包含大量单引号和双引号的数据非常有用。

我在此之前已经了解了它的一些细节: Quoting quotation marks

我发现其中一个缺点是,它确实会在编辑器中禁用语法高亮,因为编辑器将其视为一个大字符串,因此无法在内部正确突出显示html。

另一个缺点是无法从heredoc语法中直接调用函数。有一些解决方法,其中一些在这里提到:Calling PHP functions within HEREDOC strings