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

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

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

12 ответов

Решение

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

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

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

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

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

Я думаю, что это только личное предпочтение. Там нет никакой разницы между // а также #, Я лично пользуюсь # для однострочного комментария, // за комментирование кода и /** */ для блочного комментария.

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

Можно подумать, что # Форма комментирования в первую очередь предназначена для создания сценария оболочки с использованием знакомой нотации "шебанг" (#!). В следующем сценарии 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

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

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

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

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

Я сам пришел сюда за ответом, и приятно знать, что нет НИКАКОЙ разницы в коде.

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

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

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

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

Там нет официального 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, но это нормально # тоже. Мне лично это нравится, потому что я короче и экономлю байты. Это личный вкус и предвзятость, правильного ответа на него нет, пока, конечно, он не станет стандартом, которому мы должны стараться следовать как можно больше.

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

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

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

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

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

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

Один ответ 2021 года, который, безусловно, не единственный ответ, как мы видим в этой теме:

Если вы используете Visual Studio Code и используете регионы для блокировки кода, вы должны использовать, а не определять регион. На вопрос «Нет», даже для этого варианта использования: если вы комментируете регион , вы можете использовать или или /** */, метод, который вы используете для этого, является личным предпочтением.

Примеры определения блока в VSCode:

      #region this is a major block
/** DocBlock */
function one() {}
/** DocBlock */
function two() {
  #region nested region based on indentation
  // comments and code in here
      # another nested region based on indentation
        // foo
      #endregion
  #endregion
}
#endregion

При складывании внутреннего блока:

      #region this is a major block
/** DocBlock */
function one() {}
/** DocBlock */
function two() {
>  #region nested region based on indentation
}
#endregion

При складывании внешнего блока:

      > #region this is a major block

Я цитирую следующее конкретное использование, которое можно было бы попробовать, но оно не работает. На самом деле именно так вы ОТКЛЮЧАЕТЕ блок #region:

      // #region
// #endregion
/** #region */
/** #endregion */

Что касается комментирования региона в VSCode:

      /** You can now collapse this block
#region Test1
// foo
#endregion
// everything through to here is collapsed
*/

// #region Test1
// folding is disabled here
// #endregion

# #region Test1
// this also disables the fold
# #endregion

Все это говорит: « Есть ли какая-либо причина, помимо личных предпочтений, использовать // вместо # для комментариев? » Я согласен с комментариями в этой теме и в другой теме : хорошая причина использовать этот стиль комментариев поверх .

Последнее замечание: будьте осторожны с вложением на основе отступов, так как форматирование кода может удалить отступы, сделанные вручную, и, таким образом, разрушить вашу схему вложенных блоков, основанную на комментариях. Я тестировал это с обоими и (которые, кстати, также вкладываются в отступы. Опять же, в контексте вопроса OP: нет, нет причин использовать over для вложенных отступов в этом контексте в текущем VSCode, потому что оба работают точно то же самое. Тем не менее, это вариант использования для использования #над //.

Ref - расширение не требуется, проверено в 1.62.3. См. также примечания об отступах.

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

Другие вопросы по тегам