我可以在PHP中使用井号(#)进行注释吗?


144

我从未见过使用哈希(#)进行注释的PHP文件。但是今天我意识到我实际上可以做到!我假设有一个为什么每个人都//代替使用的原因,所以我在这里。

除了个人喜好以外,还有什么理由使用//而不是#发表评论?


16
这是一个哈希(或磅或正方形,具体取决于您所在的国家/地区),而不是哈希标签。主题标签是对Twitter上的内容进行分类的一种方式。
昆汀

您可以使用等效的HTML转义符# 如果您的代码中需要#符号
dotoree'2

22
我以为该#符号被称为哈希标签... :(没有理由进行如此严重的否决。经验教训
Hubro 2012年

3
我喜欢#用于单行注释,//注释代码和/* ... */注释块
John Magnolia

Answers:


163

问题的答案在PHP中为单行注释使用“#”和“ //”之间是否有区别没有

没有区别。通过查看PHP源代码的解析部分,“#”和“ //”都由相同的代码处理,因此具有完全相同的行为。


3
请注意,N ++(6.55)不能总是#正确折叠注释。我注意到在大型PHP文件中:2k行或更多。有时,它开始在多个#上折叠代码。
CoR 2014年

1
我更喜欢#评论//而不是评论。但是我一直想知道#PSR是否符合要求。
斯特凡2015年

5
哈希在描述路线时很有用,例如。# /news (code here)代替// /news (code here)。至于2k LoC文件,我认为除了要使用哪个注释标签外,还有其他问题:)
Juha Untinen '16


7
<?php
    echo 'This is a test'; // This is a one-line C++ style comment
    /* This is a multi-line comment.
       Yet another line of comment. */
    echo 'This is yet another test.';
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

RTM


//是C风格的评论
Blue Water

6

除了个人喜好之外,是否还有其他原因使用//而不是#进行注释?

我认为这只是个人喜好而已。//和之间没有区别#。我个人使用#单行注释,//注释代码和/** */块注释。

<?php
    # This is a one-line comment
    echo 'This is a test';

    // echo 'This is yet another test'; // commenting code

    /** 
     * This is a block comment
     * with multi-lines 
     */
    echo 'One final test';
?>

我喜欢将其//用于常规代码注释,因为这是大多数人在注释代码时使用的代码。我使用#的是意在描述的注释,而不是被注释掉的代码。/**/当您尝试/**/在该代码中包含`/ ** /的代码上使用时,避免使用一个衬里会减少打开/关闭冲突...最终导致过早关闭。那很糟糕。
ahnbizcad '16

5

可能有人认为#注释的形式主要是为了使用熟悉的“ shebang”(#!)表示法制作shell脚本。在下面的脚本中,PHP应该忽略第一行,因为它也是注释。例:

#!/usr/bin/php
<?php

echo "Hello PHP\n";

如果将其存储在可执行文件中,则可以从这样的终端运行它

./hello

输出是

Hello PHP

但是,这种推理是不正确的,如以下反例所示:

#!/usr/bin/php
#A
<?php

#B
echo "Hello PHP\n";

解释器会特别忽略第一行(shebang行)。PHP标记之前的注释行回显到标准输出,因为它不在PHP标记内。打开PHP标记后的注释被解释为PHP代码,但由于是注释而被忽略。

修订版本的输出为

#A
Hello PHP

13
实际上,shebang 不在 PHP代码中,因此绝对不是对PHP的注释。尝试删除!,然后通过php命令行运行文件:它将显示“#/ usr / bin / php”。忽略shebang的原因是因为PHP在文件的开头就识别出shebang行并忽略它们。
Ninj

使用php7.4,两个注释都被回显。因此,完全不会(或不再)忽略该束缚者。
Chargnn

0

如果您在团队/项目中建立了一些规则集,则可以使用两种类型的注释来概述注释代码的用途。

例如,我喜欢使用#静音/禁用配置设置,子功能,以及通常有用或重要但目前被禁用的一段代码。


我喜欢相反,但本质上是一样的。一个用于代码注释,另一个用于描述注释。
ahnbizcad '16

@ahnbizcad最好使用注释块进行描述/ ** * * /
d.raev

为什么。---- /-/-/-/
ahnbizcad '16

0

没有官方的PSR。

但是,在所有PSR示例代码中,它们都//用于内联注释。

有一个旨在对其进行标准化的PSR-2扩展建议,但它不是官方的:https : //github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2-R-coding- style-guide-additions.md#commenting-code

//在PHP文化中更常用,但是也可以使用#。我个人喜欢它,因为它更短并节省了字节。这是个人的品味和偏见,没有正确的答案,直到它成为标准为止,这是我们应该尽可能遵循的标准。


在计算机科学领域中,标准存在的问题是要制定标准,您必须拥有最佳选择,而在计算机科学中就没有最佳选择。只有错误的选择,还有更好的选择。但是“最佳选择”不存在。
Blue Water

0

是的,但是跨平台存在差异。

我一直使用#来在PHP中进行注释,但是我注意到采用上的差异。

在Windows键盘上,#键易于使用。在Mac键盘上,#键大多不存在。

因此,对于Mac用户,[Alt] + [3]或[⌥] + [3]比//更加难以键入,因此//已成为一种显示带有注释的代码的跨平台方式。

这是我的观察。


0

来自https://php.net/manual/en/migration53.deprecated.php

“ PHP 5.3.x中已弃用的功能.... INI文件中已弃用以#号开头的注释。”

你有它。默认情况下,哈希值“#”似乎保留为注释选项(不建议弃用)。我打算用它来区分嵌套的if / else语句的各个层并标记其右括号,或者像其他人在相关文章中所建议的那样,使用它来区分代码注释和注释掉的代码。(注意:自19年4月23日起,链接有效/有效,尽管在您阅读本文时谁知道该链接是否仍将正常工作。)


0

除了个人喜好之外,是否还有其他原因使用//而不是#进行注释?

我自己来这里是为了得到答案,很高兴知道没有代码差异。

但是,明智的选择可能是您更喜欢'shell-> perl-> php'注释一致性而不是'c-> php'方法。

因为我确实将php作为穷人的webby perl来处理,所以我使用#..然后我看到了别人的代码,直接进入SO。;)


-8

PHP 5.3不推荐使用带有“#”的注释。因此,请始终使用//或/ ... /


21
它们仅在INI文件中弃用。
DisgruntledGoat 2013年

@DisgruntledGoat是否引用官方文档?
2015年

1
直接来自php.net:.INI 文件中已弃用以“#”开头的注释。
2015年

4
安德烈,也许是时候删除这个答案了。
何塞·曼努埃尔·阿巴卡·罗德里格斯

1
少研究!使您迷失:),但这也帮助我知道#在INI文件中已弃用
Abdul Manan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.