149
votes

I have never, ever, seen a PHP file using hashes (#) for commenting. But today I realized that I actually can! I'm assuming there's a reason why everybody uses // instead though, so here I am.

Is there any reason, aside from personal preference, to use // rather than # for comments?

11
That's a hash (or pound, or square, depending on which country you are in), not a hash tag. A hashtag is a means of categorising content on Twitter.Quentin
You could use the HTML escape equivalent # if you need the # symbol in your codedotoree
I thought the # symbol was called a hash tag... :( No reason to down vote so heavily. Lesson learntHubro
I like to use # for single line comments, // for commenting out code & /* ... */ for comment blocksJohn Magnolia
Possible duplicate of PHP Comments # vs //nawfal

11 Answers

170
votes

2021 UPDATE: As of PHP 8, the two characters are not the same. The sequence #[ is used for Attributes.(Thanks to i336 for the comment)

Original Answer:

The answer to the question Is there any difference between using "#" and "//" for single-line comments in PHP? is no.

There is no difference. By looking at the parsing part of PHP source code, both "#" and "//" are handled by the same code and therefore have the exact same behavior.

11
votes

PHP's documentation describes the different possibilities of comments. See http://www.php.net/manual/en/language.basic-syntax.comments.php

But it does not say anything about differences between "//" and "#". So there should not be a technical difference. PHP uses C syntax, so I think that is the reason why most of the programmers are using the C-style comments '//'.

7
votes
<?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

7
votes

Is there any reason, aside from personal preference, to use // rather than # for comments?

I think it is just a personal preference only. There is no difference between // and #. I personally use # for one-line comment, // for commenting out code and /** */ for block comment.

<?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';
?>
6
votes

One might think that the # form of commenting is primarily intended to make a shell script using the familiar "shebang" (#!) notation. In the following script, PHP should ignore the first line because it is also a comment. Example:

#!/usr/bin/php
<?php

echo "Hello PHP\n";

If you store it in an executable file you can then run it from a terminal like this

./hello

The output is

Hello PHP

However, this reasoning is incorrect, as the following counterexample shows:

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

#B
echo "Hello PHP\n";

The first line (the shebang line) is specially ignored by the interpreter. The comment line before the PHP tag is echoed to standard output because it is not inside a PHP tag. The comment after the opening PHP tag is interpreted as PHP code but it is ignored because it is a comment.

The output of the revised version is

#A
Hello PHP
0
votes

If you establish some rule sets in your team / project... the 2 types of comments can be used to outline the purpose of the commented code.

For example I like to use # to mute / disable config settings, sub functions and in general a piece of code that is useful or important, but is just currently disabled.

0
votes

There's no official PSR for that.

However, in all PSR example code, they use // for inline comments.

There's an PSR-2 extension proposal that aims to standardize it, but it's not official: https://github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2-R-coding-style-guide-additions.md#commenting-code

// is more commonly used in the PHP culture, but it's fine to use # too. I personally like it, for being shorter and saving bytes. It's personal taste and biased, there's no right answer for it, until, of course, it becomes a standard, which is something we should try to follow as much as possible.

0
votes

Yes, however there are cross platform differences.

I use # all the time for commenting in PHP, but I have noticed an adoption difference.

On windows keyboard the # key is easy to use. On mac keyboard # key mostly isn't present.

So for mac users, [Alt] + [3] or [⌥] + [3] is more difficult to type than //, so // has become a cross platform way of displaying code with comments.

This is my observation.

0
votes

From https://php.net/manual/en/migration53.deprecated.php

"Deprecated features in PHP 5.3.x ...Comments starting with '#' are now deprecated in .INI files."

There you have it. Hash '#' appears to remain as a comment option by default by not being deprecated. I plan to use it to distinguish various layers of nested if/else statements and mark their closing brackets, or use to distinguish code comments from commented out code as others have suggested in related posts. (Note: Link was valid/working as of 4/23/19, although who knows if it'll still be working when you're reading this.)

0
votes

Is there any reason, aside from personal preference, to use // rather than # for comments?

I came here for the answer myself, and its good to know there is NO code difference.

However, preference-wise one could argue that you'd prefer the 'shell->perl->php' comment consistency vs the 'c->php' way.

Since I did approach php as a poor man's webby perl, I was using #.. and then I saw someone else's code and came straight to SO. ;)

-8
votes

Comments with "#" are deprecated with PHP 5.3. So always use // or /.../