我正在使用doxygen,但它没有记录我的一些课程。所有这些类都按以下方式调用:
<?php
if(!class_exists('a')){
class a{
function b(){
print 'c';
}
}
}
?>
我认为它与if(!class_exists('a'))有关,我怎么能让doxygen仍然记录这个?
答案 0 :(得分:1)
Doxygen有很多记录php代码的问题。其中许多都可以使用input_filter
来纠正。
使用以下代码作为过滤器
<?php
$source = file_get_contents($argv[1]);
$regexp = '#(<\?php[\s]+)(if\(!class_exists\([^\)]+\)\)\{)([\s\S]*)(\})([\s]*\?>)#';
$replace = '$1 $3 $5';
$source = preg_replace($regexp, $replace, $source);
echo $source;
?>
并输入
/path/to/php php_var_filter.php
进入INPUT_FILTER
设置。
注意:这样你可以修复许多doxygen问题。如果某些东西不起作用,那就是c(或c ++)代码与php代码之间存在差异(最有可能)。您可以使用input_filter将您的PHP代码更改为更像c代码。这将解决许多问题。
修改强>
也许你还想考虑自动加载功能。我认为这是获得if(!class_exists(..))
- 结果的更好方法。
修改强> 我刚刚注意到我已经回答了一个不同的类似问题。您也可以使用此answer。
你可以找到更多输入过滤器来改善do GitHub上的doxygen的php支持。