PHP - 里面的评论<! - ?php echo <<< EOF - >

时间:2011-07-01 15:32:04

标签: php comments

如果我使用这种语法,我如何评论?:

<?php
            echo <<<EOF

    Is it //Comment or <!-- Comment --> or something else?    

            EOF;
            ?>

我有点困惑。 谢谢

7 个答案:

答案 0 :(得分:11)

你做不到。 HEREDOC的观点是,其中的任何内容都将成为字符串的一部分。存在是为了避免将PHP元字符(包括注释)视为这样。您放入其中的任何内容都将出现在字符串中(因此,在此示例中,将回显到输出所指向的任何位置)。

如果输出是HTML,那么您可以在其中包含HTML注释。这仍将出现在输出中,但解析HTML的任何内容都会将其视为注释。同样,如果内容是JS,那么您可以使用JS注释,依此类推。

答案 1 :(得分:4)

您无法在heredoc语法中使用评论。

http://en.wikipedia.org/wiki/Here_document

这是一种指定文字字符串的方法,字面意思。

答案 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