какова цель дополнительных звездочек в комментариях php?

Я (наконец-то) читал о стандартах кодирования PEAR (php).

К чему такой комментарий:

/** 
*   Here is my comment
*   I Wrote this in a haiku
*   But why put the stars?
*/

В отличие от этого:

/* 
   Here is a comment
   No haiku or 
   anything special, but it still works!
*/

person d-_-b    schedule 01.10.2012    source источник
comment
Я не понимаю близких голосов. Это законный вопрос. Есть реальная причина для такого комментария.   -  person bstpierre    schedule 02.10.2012


Ответы (6)


Документ /** stuff */ также называется нотацией DocBlock.

Он используется для документирования PHP-функций, классов и т. д.

/** 
* A test function
*
* @param  foo $bar
* @return baz
*/
function test(foo $bar) { return new baz; }

Некоторые редакторы хорошо используют это для выполнения своей функции Code Insight, очень мощного инструмента, который сокращает время, затрачиваемое на просмотр старых объявлений функций. У Aptana и Zend Studio есть эта функция, возможно, и у других.

Вы также можете использовать его в сочетании с Reflection, чтобы выполнить АОП. , выполняя проверку DocBlock над вашими объявлениями во время выполнения. Фактически, Doctrine использует его для построения карты атрибутов объекта для их реализации «Active Record».

person Ja͢ck    schedule 01.10.2012

Комментарий с двойной звездочкой иногда используется некоторыми системами документации. Система документации будет обрабатывать блок и искать определенные ключевые слова, такие как @author или @var.

Комментарии с одной звездочкой будут рассматриваться как // комментарии.

См. PhpDoc http://www.phpdoc.org/docs/latest/guides/types.html

person dcbarans    schedule 01.10.2012

Я согласен с Айоном и Квентином. В основном это читабельность. Однако есть еще одна вещь.

Существуют автоматические генераторы документации (например, doxygen).

Они требуют особого форматирования комментариев, чтобы включить эти комментарии в документацию. Я считаю, что этот стиль комментирования используется именно для этой цели (посмотрите следующую страницу документации doxygen - http://www.doxygen.nl/manual/docblocks.html)

person Victor Ronin    schedule 01.10.2012
comment
Да, я нашел это, когда искал doxygen, поэтому я предположил, что было немного больше. - person d-_-b; 01.10.2012

Читаемость.

Он четко выделяет закомментированный раздел для людей, читающих код.

person Quentin    schedule 01.10.2012
comment
Я так и думал... Так это строго для удобства чтения? Никаких других преимуществ? - person d-_-b; 01.10.2012
comment
если вы используете редактор, который не выделяет контекст, это помогает прояснить/идентифицировать более длинные блоки комментариев. - person Dave; 01.10.2012
comment
Это не совсем так. ТЕХНИЧЕСКИ это формальность, чтобы использовать двойную звездочку. Но системы документации, такие как phpdoc, полагаются на него. - person dcbarans; 01.10.2012

Я думаю, что это в основном только для внешнего вида/удобочитаемости. Представьте, что у вас есть очень длинный раздел комментариев, выходящий за пределы одного экрана. Затем, увидев эти звездочки, вы узнаете, что это часть комментария, даже если вы не видите начала и конца.

person ajon    schedule 01.10.2012

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

Если вы закомментируете блок с помощью /* ... */, все внутри блока станет оранжевым, что затруднит чтение кода.

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

PS. Если вы используете Блокнот или что-то подобное для редактирования кода PHP, я настоятельно рекомендую вам установить jEdit. Это сэкономит вам огромное количество времени и нервов. Такие вещи, как автоматическое указание начала и конца { } , ( ) и т. д.

person user2605793    schedule 15.04.2014
comment
VS Code FTW ???? мнение - person s3c; 23.07.2020