Я использую Doxygen для документирования своего php-проекта и настроил несколько псевдонимов. Они работают нормально в большинстве случаев, но когда он встречает их в блоке уровня функции, который находится после функции с необработанным HTML, он жалуется, что это неизвестный хук (предупреждение: найдена неизвестная команда '\ hook'). У меня он работает в нескольких разных файлах, но везде, где он находится после этого необработанного HTML, он не работает. Что я делаю не так?
Упрощенный файл:
<?php
/**
* @file foo.php
* Some description.
*
* @since 1.0.0
* @author Me
* @hook init //This one works
*/
/**
* Simple description.
*
* Long description.
*
* @class Bar
* @since 1.0.0
* @author Me
* @hook init //This one works
*/
class Bar{
/**
* Description.
*
* @hook init //This one works
* @since 1.0.0
*/
function foobar1(){
//Do stuff here...
}
/**
* Description.
*
* @since 1.0.0
*/
function html(){
$url = "https://www.website.com/path";
if($some_condition): ?>
<div class="notice notice-info">
<h2>Welcome!</h2>
<p>If you need access to a site, additional permissions or you've found a bug, please visit <a href="<?php echo $url; ?>" target="_blank">this link</a></p>
</div>
<?php endif;
}
/**
* Description.
*
* @hook init //This one doesn't work
* @since 1.0.0
*/
function foobar2(){
//Do stuff here...
}
}
Это поля (кроме входных данных и тому подобное), которые изменены в моем Doxyfile:
JAVADOC_AUTOBRIEF = YES
ALIASES = Block="@par Block name^^"
ALIASES += Description="@par Block description^^"
ALIASES += hook="@par Hook^^"
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
SORT_MEMBER_DOCS = NO
SHOW_NAMESPACES = NO
#Using this to keep Doxygen from thinking reserved php words are variables
EXCLUDE_SYMBOLS = if
EXCLUDE_SYMBOLS += elseif
EXCLUDE_SYMBOLS += endif
EXCLUDE_SYMBOLS += for
EXCLUDE_SYMBOLS += endfor
EXCLUDE_SYMBOLS += foreach
EXCLUDE_SYMBOLS += endforeach
EXCLUDE_SYMBOLS += while
EXCLUDE_SYMBOLS += endwhile
EXCLUDE_SYMBOLS += <?php
EXCLUDE_SYMBOLS += ?>
EXCLUDE_SYMBOLS += <script>
EXCLUDE_SYMBOLS += </script>
В моем примере кода показан псевдоним Hook, но это та же история для любого из них.
Обновление: похоже, что-то связано с тем фактом, что функция находится ниже другой, которая имеет необработанный HTML вЭто. Я соответствующим образом обновил код.
Обновление: я обновил проблемную функцию с помощью HTML, который ближе к тому, что я на самом деле использую. В соответствии с запросом, здесь вывод этого файла при запуске doxygen -d commentscan
CommentScanner: C:/path/bar.php:2
input=[
@file bar.php
Some description.
@since 1.0.0
@author Me
@par Hook\_linebr init //This one works
]
-----------
CommentScanner: C:/path/bar.php:2
output=[
brief=[line=2
]
docs=[line=3
Some description.
@since 1.0.0
@author Me
@par Hook
init //This one works]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:11
input=[
Simple description.
Long description.
@class Bar
@since 1.0.0
@author Me
@par Hook\_linebr init //This one works
]
-----------
CommentScanner: C:/path/bar.php:11
output=[
brief=[line=11
Simple description.]
docs=[line=13
Long description.
@since 1.0.0
@author Me
@par Hook
init //This one works]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:23
input=[
Description.
@par Hook\_linebr init //This one works
@since 1.0.0
]
-----------
CommentScanner: C:/path/bar.php:23
output=[
brief=[line=23
Description.]
docs=[line=25
@par Hook
init //This one works
@since 1.0.0]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:33
input=[
Description.
@since 1.0.0
]
-----------
CommentScanner: C:/path/bar.php:33
output=[
brief=[line=33
Description.]
docs=[line=35
@since 1.0.0]
inbody=[line=-1
]
]
===========
-----------
CommentScanner: C:/path/bar.php:52
input=[
Description.
@hook init //This one doesn't work
@since 1.0.0
]
-----------
CommentScanner: C:/path/bar.php:52
output=[
brief=[line=52
Description.]
docs=[line=54
@hook init //This one doesn't work
@since 1.0.0]
inbody=[line=-1
]
]
===========
C:/path/bar.php:54: warning: Found unknown command '\hook'