PHP-内部评论<;?php echo<<<;EOF


PHP - Comments inside <?php echo <<<EOF

如果使用此语法,如何注释?:

<?php
            echo <<<EOF
    Is it //Comment or <!-- Comment --> or something else?    
            EOF;
            ?>

我有点困惑。感谢

你不能。HEREDOC的要点是,它里面的任何东西都将是字符串的一部分。它的存在是为了避免PHP元字符(包括注释(被这样对待。你放在里面的任何东西都会出现在字符串中(因此,在本例中,会被回显到输出指向的任何地方(。

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

不能在heredoc语法中使用注释。

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

这是一种从字面上指定文本字符串的方法。

heredoc分隔符之间的所有内容都是从字面上解释的,这就是heredoc语法的要点。任何HTML注释也会被输出,PHP不在乎浏览器会省略它们。

这取决于echo要输出的类型。如果要将该数据回显到HTML页面,则可以使用<!-- -->语法,浏览器会将其视为注释。如果你输出到一个纯文本文件,那么heredoc中的所有内容都将被输出(事实上,在编写HTML时,所有内容都会被输出,只有浏览器会解释HTML注释(。

当我使用heredoc语法并需要对其中的信息进行注释时,我通常在heredoc之前使用(PHP风格(注释,并根据其行号引用其中的任何特定行,相对于heredoc:

/* Write out default INI file.
 * L002: Log level. Possible values: debug,info,warning,error.
 */
echo <<<EOF
[global]
logging = error
...
EOF

希望能有所帮助。

据我所知,您不能将注释放在HEREDOC块中。根据PHP文档http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc"Heredoc文本的行为就像一个双引号字符串,没有双引号。"…并且不能将注释放在双引号字符串中。

实际上,在echo内部有一种迂回的注释方式。

您可以使用以下语法

<?php
'.(/*comment here*/ NULL).'

这一行将被读取为内部php,并且可以包含注释。必须包含NULL,因为内部php中的所有内容都需要一个值。NULL是最方便的选择,因为您实际上并不想要一个值,只想要一个注释。

实际上,不能在字符串中间使用PHP注释(既不能在双引号中使用,也不能在单引号中使用或在heredoc字符串中使用(。它们将按字面意思显示。

在某些罕见的情况下,模拟注释并稍后将其从字符串中删除可能会很有用。例如,如果您正在创建某种模板引擎,它可能会很有用。但在大多数情况下,你肯定不应该这样做,因为这是一种糟糕的做法。

您可以使用"''r''n"(换行符使用引号(构建字符串,并将注释放在字符串后的同一行上,例如。echo "line1'r'nline2"; //this outputs two lines