如果标签,Doxygen不记录PHP代码

时间:2014-10-02 19:35:17

标签: php class documentation doxygen

我正在使用doxygen,但它没有记录我的一些课程。所有这些类都按以下方式调用:

<?php
if(!class_exists('a')){
    class a{

        function b(){
            print 'c';
        }
    }
}
?>

我认为它与if(!class_exists('a'))有关,我怎么能让doxygen仍然记录这个?

1 个答案:

答案 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设置。

注意:这样你可以修复许多d​​oxygen问题。如果某些东西不起作用,那就是c(或c ++)代码与php代码之间存在差异(最有可能)。您可以使用input_filter将您的PHP代码更改为更像c代码。这将解决许多问题。

修改
也许你还想考虑自动加载功能。我认为这是获得if(!class_exists(..)) - 结果的更好方法。

修改 我刚刚注意到我已经回答了一个不同的类似问题。您也可以使用此answer

你可以找到更多输入过滤器来改善do GitHub上的doxygen的php支持。