Чи можу я використовувати хеш-знак (#) для коментарів у PHP?


144

Я ніколи не бачив файлу PHP, використовуючи хеші ( #) для коментування. Але сьогодні я зрозумів, що насправді вмію! Я припускаю, що є причина, чому всі використовують //замість цього, ось я тут.

Чи є якась причина, окрім особистих уподобань, використовувати, //а не #для коментарів?


16
Це хеш (або фунт, або квадрат, залежно від того, в якій країні ви перебуваєте), а не хеш-тег. Хештег - це засіб класифікації вмісту в Twitter.
Квентін

Ви можете використовувати еквівалент HTML-версії & # 35; якщо вам потрібен символ # у вашому коді
dotoree

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

3
Мені подобається використовувати #коментарі в одному рядку, //для коментування коду та /* ... */блоків коментарів
Джон Магнолія

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

Відповіді:


163

Відповідь на питання Чи є різниця між використанням "#" та "//" для однорядних коментарів у PHP? немає ні .

Різниці немає. Переглядаючи частину розбору вихідного коду PHP, і "#", і "//" обробляються одним і тим же кодом і, отже, мають точно однакову поведінку.


3
Зауважте, що N ++ (6.55) не завжди може #правильно складати коментарі. Я помітив, що у великих PHP-файлах: 2k рядків і більше. Іноді він починає складати код на кілька #.
КР

1
Я дуже віддаю перевагу #коментарям над //одними .. але мені завжди було цікаво, чи #відповідає ПДР .. Це?
Stphane

5
Хеш корисний при описі маршрутів, наприклад. # /news (code here)замість // /news (code here). Що стосується 2k файлів LoC, я думаю, є й інші проблеми, ніж тег коментарів, який слід використовувати :)
Juha Untinen

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

Мені подобається використовувати //для регулярних коментарів до коду, оскільки саме це використовує більшість людей, коментуючи код. І я використовую #для коментарів, які призначені для опису, а не коду, який коментується. Якщо уникнути /**/використання одного вкладиша, зменшуються конфлікти при відкритті / закритті, коли ви намагаєтесь використовувати /**/код, який має `/ ** / у цьому коді ... у вас закінчується передчасне закриття. і це погано.
ahnbizcad

5

Можна подумати, що #форма коментування в першу чергу призначена для створення сценарію оболонки, використовуючи знайомі позначення "shebang" (#!). У наступному сценарії 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
Насправді, shebang знаходиться поза кодом PHP, тому це абсолютно не є коментарем для PHP . Спробуйте видалити !та запустіть файл через phpкомандний рядок: він надрукує "# / usr / bin / php". Причина, чому shebang ігнорується, полягає в тому, що PHP розпізнає рядки shebang на самому початку файлів і ігнорує їх.
Ninj

Використовуючи php7.4, обидва коментарі перегукуються. Таким чином, смуга взагалі не ігнорується (або вже не є).
Chargnn

0

Якщо у вашій команді / проекті встановлено кілька наборів правил ... два типи коментарів можна використовувати для окреслення мети коментованого коду.

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


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

@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.19, хоча хто знає, чи все ще буде працювати, коли ви читаєте це.)


0

Чи є якась причина, окрім особистих уподобань, використовувати //, а не # для коментарів?

Я прийшов сюди, щоб відповісти сам, і добре знати, що НІМАЄ різниці в коді.

Однак, можливо, можна стверджувати, що ви віддаєте перевагу послідовності коментарів 'shell-> perl-> php' проти 'c-> php'.

Оскільки я підходив до php як веб-сторінки бідної людини, я використовував # .., а потім побачив чийсь код і прийшов прямо до 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.