2014-03-25 42 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支持。

相关问题