Могу ли я использовать хеш-знак (#) для комментирования в PHP?


144

Я никогда не видел PHP-файл, использующий hashes ( #) для комментариев. Но сегодня я понял, что на самом деле могу! Я предполагаю, что есть причина, почему все используют //вместо этого, так что вот я здесь.

Есть ли какая-либо причина, помимо личных предпочтений, использовать //вместо #комментариев?


16
Это хеш (или фунт, или квадрат, в зависимости от того, в какой стране вы находитесь), а не хеш-тег. Хэштег является средством категоризации контента в Twitter.
Квентин

Вы можете использовать экранирующий эквивалент HTML & # 35; если вам нужен символ # в вашем коде
dotoree

22
Я думал, что #символ был назван хеш-тегом ... :( Нет причин так сильно голосовать вниз. Урок усвоен
Hubro

3
Мне нравится использовать #для однострочных комментариев, //для комментирования кода и /* ... */для блоков комментариев
Джон Магнолия

Возможный дубликат комментариев PHP # vs //
nawfal

Ответы:


163

Ответ на вопрос Есть ли разница между использованием «#» и «//» для однострочных комментариев в PHP? нет нет .

Нет никакой разницы. Смотря на часть синтаксического анализа исходного кода PHP, оба «#» и «//» обрабатываются одним и тем же кодом и, следовательно, имеют одинаковое поведение.


3
Обратите внимание, что N ++ (6.55) не всегда может #правильно складывать комментарии. Я заметил, что в больших файлах PHP: 2k строк и более. Иногда начинает складываться код на нескольких #.
CoR

1
Я предпочитаю #комментарии //, а не комментарии ... но мне всегда было интересно, соответствует ли #PSR. Так ли это?
Стефан

5
Хеш полезен при описании маршрутов, например. # /news (code here)вместо // /news (code here). Что касается файлов 2k LoC, я думаю, что есть другие проблемы, кроме того, какой тег комментария использовать :)
Юха Унтинен

11

Документация PHP описывает различные возможности комментариев. См. Http://www.php.net/manual/en/language.basic-syntax.comments.php

Но это ничего не говорит о различиях между "//" и "#". Так что не должно быть технической разницы. PHP использует синтаксис C, поэтому я думаю, что именно по этой причине большинство программистов используют комментарии в стиле C '//'.


1
Или он использует синтаксис perl, и в этом случае появляется «#». И Perl получает синтаксис комментариев из оболочек Unix-EY.
Джерард ONeill

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

Мне нравится использовать //для обычных комментариев кода, так как это то, что большинство людей используют при комментировании кода. И я использую #для комментариев, которые предназначены для описания, а не код, который закомментирован. Избегание /**/однострочников сокращает конфликты открытия / закрытия, когда вы пытаетесь использовать /**/код, содержащий `/ ** / в этом коде ... в результате вы получаете преждевременное закрытие. и это плохо.
Анбизкад

5

Можно подумать, что #форма комментирования в первую очередь предназначена для создания сценария оболочки с использованием знакомой нотации «шебанг» (#!). В следующем сценарии PHP должен игнорировать первую строку, потому что это также комментарий. Пример:

#!/usr/bin/php
<?php

echo "Hello PHP\n";

Если вы храните его в исполняемом файле, вы можете запустить его из терминала, как это

./hello

Выход

Hello PHP

Однако это рассуждение неверно, как показывает следующий контрпример:

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

#B
echo "Hello PHP\n";

Первая строка (строка Шебанга) специально игнорируется интерпретатором. Строка комментария перед тегом PHP выводится на стандартный вывод, потому что она не внутри тега PHP. Комментарий после открывающего тега PHP интерпретируется как код PHP, но он игнорируется, потому что это комментарий.

Выход пересмотренной версии

#A
Hello PHP

13
На самом деле, шебанг находится за пределами PHP-кода, так что это абсолютно не комментарий для PHP . Попробуйте удалить !и запустить файл через phpкомандную строку: он выведет «# / usr / bin / php». Причина, по которой шебанг игнорируется, заключается в том, что PHP распознает строки шебанга в самом начале файлов и игнорирует их.
Ninj

Используя php7.4, оба комментария отражены. Таким образом, sheband не игнорируется (или больше не игнорируется).
Chargnn

0

Если вы устанавливаете некоторые наборы правил в вашей команде / проекте ... 2 типа комментариев могут использоваться для описания цели закомментированного кода.

Например, мне нравится использовать #для отключения / отключения настроек конфигурации, подфункций и в целом фрагмент кода, который полезен или важен, но в настоящее время отключен.


Мне нравится делать противоположное, но по сути то же самое по духу. используйте один для комментариев кода, а другой для комментариев описания.
Анбизкад

@ahnbizcad, лучше использовать блоки комментариев для описания / ** * * /
d.raev

Зачем. ---- / - / - / - / -
ahnbizcad

0

Там нет официального PSR для этого.

Однако во всем примере кода PSR они используются //для встроенных комментариев.

Есть предложение по расширению PSR-2, которое направлено на его стандартизацию, но оно не является официальным: https://github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2-R-coding- style-guide-additions.md # комментирование-код

//более широко используется в культуре PHP, но его тоже можно использовать #. Мне лично это нравится, потому что я короче и экономлю байты. Это личный вкус и предвзятость, правильного ответа на него нет, пока, конечно, он не станет стандартом, которому мы должны стараться следовать как можно больше.


Проблема со стандартами в области компьютерных наук состоит в том, что для создания стандарта у вас должен быть лучший вариант, а в компьютерных науках нет такого понятия, как лучший вариант. Есть только неправильные варианты, и лучшие варианты. Но «лучшего варианта» не существует.
Голубая вода

0

Да, однако существуют кроссплатформенные различия.

Я постоянно использую # для комментирования в PHP, но я заметил разницу в принятии.

На клавиатуре Windows клавиша # проста в использовании. На клавиатуре Mac клавиши # в основном нет.

Таким образом, для пользователей Mac печатать [Alt] + [3] или [⌥] + [3] сложнее, чем //, поэтому // стал кроссплатформенным способом отображения кода с комментариями.

Это моё наблюдение.


0

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

«Устаревшие функции в PHP 5.3.x ... Комментарии, начинающиеся с« # », теперь не поддерживаются в файлах .INI».

Там у вас есть это. По умолчанию хэш '#' остается в качестве параметра комментария, но не считается устаревшим. Я планирую использовать его, чтобы различать различные уровни вложенных операторов if / else и отмечать их закрывающими скобками, или использовать для различения комментариев кода от закомментированного кода, как другие предлагали в соответствующих публикациях. (Примечание. Ссылка действительна / работает по состоянию на 23.04.199, хотя кто знает, будет ли она работать, когда вы ее читаете?)


0

Есть ли какая-либо причина, кроме личных предпочтений, использовать // вместо # для комментариев?

Я пришел сюда за ответом сам, и это хорошо знать, нет никакой разницы в коде.

Однако, с точки зрения предпочтений можно утверждать, что вы бы предпочли согласованность комментариев «shell-> perl-> php», а не «c-> php».

Так как я подходил к php как к webl perl для бедного человека, я использовал # .. а потом я увидел чей-то код и пришел прямо к SO. ;)


-8

Комментарии с "#" не поддерживаются PHP 5.3. Поэтому всегда используйте // или / ... /


21
Они устарели только в файлах INI .
Рассерженная шлюха

@DisgruntledGoat Любая ссылка на официальную документацию?
Уилт

1
Прямо с php.net: комментарии, начинающиеся с '#', теперь не поддерживаются в файлах .INI.
Уилт

4
Андре, может быть, пришло время удалить этот ответ.
Жозе Мануэль Абарка Родригес

1
меньше исследований! сделаю тебя потерянным :), но это также поможет мне понять, что # не рекомендуется в файлах INI
Абдул Манан,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.