2014-10-02 56 views
2

我使用的是doxygen,但它沒有記錄我的一些類。所有這些類被稱爲以下列方式:Doxygen不記錄php代碼裏面的標籤

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

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

我認爲它必須做,如果,我怎樣才能讓doxygen的還是這個文件(class_exists(「A」)!)?

+0

你有沒有試過在課堂上面放一個docblock?與你一起,我猜測它與控制結構中的類有關。 – Crackertastic 2014-10-02 19:43:56

+0

是的,我做了,但我也設置doxygen文件無證結構。 – user3053216 2014-10-02 20:11:03

+0

好吧,我很好奇。我也使用doxygen,只是不像你上面展示的那樣。我正在考慮在該類之上的docblock會迫使它記錄該結構。 – Crackertastic 2014-10-02 20:25:15

回答

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(..)) -result的更好方法。

編輯 我剛剛注意到我已經回答了一個類似的問題不同。您也可以使用這個answer

你可以在GitHub找到更多的輸入過濾器來改善doxygen的php支持。