2014-03-25 44 views
0

從PHP 5.4開始,對於數組有一個簡短的語法。
可以寫$arr = [1,2,3,4,5]; insted的的$arr = array(1,2,3,4,5);有沒有辦法使用數組短語法來獲取doxygen(PHP 5.4)

但是,如果你有這樣的事情:

class Test 
{ 
    /** 
    * brief description 
    * @var array $arr 
    */ 
    $arr = [ 0 => [ ... ], 2 => [ ... ] ]; 
} 

那麼doxygen的不顯示的初始行或只有像[ 0 => [ ... ]

現在我有很多代碼只使用簡短的語法,我不想改變這個文檔工具。

有沒有什麼辦法教doxygen使用[...]作爲array(...)?我使用的doxygen 1.8.7

在此先感謝

編輯:
我有一個想法,這個問題可能是一個換行符,如果我把它寫這樣

$arr = [ 0 => [ ... ], 
      2 => [ ... ] ]; 

我測試了這個,但沒有效果。但是,如果我遺漏了第一個逗號,它可以正常工作(有和沒有換行符)。但是如果我遺漏了逗號,這顯然是一個語法錯誤。

任何想法如何解決這一問題?

+0

你是否在'0 =>' –

+0

只有一些數組。但是沒有一個下面的例子可以工作:'0 => []','0 => [1]','0 => [0 => [...]]' – AbcAeffchen

回答

0

這需要一段時間,但我自己找到了一種方法。也許有人有同樣的問題,所以我在這裏發佈我的解決方案。

我讀這answer到另一個問題,我寫了一個過濾器,改變
public $var = [ ... ];public $var = array(...);

Doxygen的比裏面會正確顯示陣列和一切。

<?php 

$source = file_get_contents($argv[1]); 

$regexp = '#(var|public|protected|private)\s+(\$[^\s;=]+)\s+\=\s+\[([\s\S]*?)\]\;#'; 
$replac = '${1} ${2} = array(${3});'; 
$source = preg_replace($regexp, $replac, $source); 

echo $source; 

?> 

Here是正則表達式的預覽。

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

相關問題