如果我使用这种语法,我如何评论?:
<?php
echo <<<EOF
Is it //Comment or <!-- Comment --> or something else?
EOF;
?>
我有点困惑。 谢谢
答案 0 :(得分:11)
你做不到。 HEREDOC的观点是,其中的任何内容都将成为字符串的一部分。存在是为了避免将PHP元字符(包括注释)视为这样。您放入其中的任何内容都将出现在字符串中(因此,在此示例中,将回显到输出所指向的任何位置)。
如果输出是HTML,那么您可以在其中包含HTML注释。这仍将出现在输出中,但解析HTML的任何内容都会将其视为注释。同样,如果内容是JS,那么您可以使用JS注释,依此类推。
答案 1 :(得分:4)
答案 2 :(得分:3)
heredoc分隔符之间的所有内容都按字面解释,这就是heredoc语法的重点。任何HTML注释也将被输出,PHP并不关心浏览器是否会省略它们。
答案 3 :(得分:2)
这取决于您echo
的输出类型。如果您将该数据回显到HTML页面,则可以使用<!-- -->
语法,浏览器会将其视为注释。如果您输出到纯文本文件,则会输出heredoc中的所有内容(实际上,在编写HTML时也会输出所有内容,只需浏览器解释HTML注释)。
当我使用heredoc语法并需要在里面评论信息时,我通常在之前使用(PHP风格)评论并通过其行号引用任何特定行,相对到了heredoc:
/* Write out default INI file.
* L002: Log level. Possible values: debug,info,warning,error.
*/
echo <<<EOF
[global]
logging = error
...
EOF
希望有所帮助。
答案 4 :(得分:1)
据我所知,你不能在HEREDOC区块内放置评论。 根据{{3}}上的PHP文档,“Heredoc文本的行为就像双引号字符串,没有双引号。”..而且你不能将注释放在双引号字符串中。
答案 5 :(得分:0)
实际上,在回声中有一种迂回的评论方式。
您可以使用以下语法
<?php
'.(/*comment here*/ NULL).'
此行将被视为内部php并且可以包含注释。必须包含NULL,因为内部php中的所有内容都需要一个值。 NULL是最方便的选择,因为你实际上并不想要一个值,只需要注释。
答案 6 :(得分:-2)
实际上,您不能在字符串中间使用PHP注释(既不是双引号也不是单引号或 heredoc 字符串)。他们将按字面意思显示。
在极少数情况下,模拟注释并稍后从字符串中删除它们可能很有用。例如,如果您要创建某种模板引擎,它可能很有用。但当然在大多数情况下你不应该这样做,因为这是不好的做法。
您可以使用“\ r \ n”(使用双引号换行)来构建字符串,并在字符串之后将注释放在同一行上,例如
echo "line1\r\nline2"; //this outputs two lines