PHP中EOT和HTML有什么区别?

22

我见过一些人使用这段代码。

echo <<< EOT
Hi <br>
EOT;

并且

echo <<< HTML
Hello<br>
HTML;

这两者有什么不同?为什么不能使用普通的echo,例如:
echo "How are you<br>"?
3个回答

26

这只是HEREDOC语法的分隔符。使用HEREDOC的唯一好处是可以保留源代码中字符串的缩进和结构。与连接字符串相比,它更易于处理 - 对于您的示例Hi <br>,没有使用HEREDOC的好理由。


3
我只在 JavaScript 中使用 HEREDOC,因为这样可以避免在使用 " 和 ' 时进行转义,否则就要使用标准方法。 - user557846
是的,我现在几乎完全使用NOWDOC,因为我习惯单引号字符串。 - AlienWebguy
5
回答他关于EOT和HTML两者之间的区别的问题:在功能方面,它们没有区别。在“HEREDOC”的开头和结尾处使用哪种标识符取决于开发人员自己决定。你应该注意使用一个不会出现在字符串本身中的标识符。使用EOT与HTML就像是使用$foo和$bar这两个变量名之间的区别一样,它们的功能是相同的,只是名称不同而已。 - Aaron Blenkush
分隔符可以出现在字符串中,只需确保字符串已缩进,因为结束分隔符必须位于第0列。(行的最左边) - AlienWebguy

6

可能已经很晚了,但在今天的IDE环境下,当您使用HEREDOCS时,标识符提供了存储何种信息的提示。

比如说,如果使用<<<SQL,IDE的语法高亮器可以使用SQL标识符来突出显示字符串内容作为SQL查询。如果使用<<<HTML,则进行HTML高亮处理...以此类推。


5
为什么不使用普通的echo语句呢? 对于这个例子来说,使用heredoc毫无意义。 而且使用echo打印单行文本确实很方便。 因此,没有人会使用heredoc进行这种操作。 再者,在输出大段文本时,heredoc也没什么用处,因为我们只需关闭PHP标记并直接编写文本即可。 唯一使用heredoc的场景是需要将大块文本存储在变量中。
$var = <<< HERE
Hello %s!
Please follow this link %s to continue registration.
HERE;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接