需要从javadoc注释(例如有下面字符串注释)里提取方法的参数($id和$name)和说明(ID名和名字),有什么好的方法呢?本人其实也有一个想法,不过在提取参数和说明时用了很多正则,感觉比较繁琐,想集思广益,问下大家还有什么好的办法呢?效率越高越好;^)$test = "
/**
* 方法名
* @param int $id ID名
* @param string $name 名字
* @return unknow";
*/
/**
* 方法名
* @param int $id ID名
* @param string $name 名字
* @return unknow";
*/
如果是生成文档就用phpdoc,
如果要动态分析类可以用反射
<?php
$test = '
/**
* 方法名
* @param int $id ID名
* @param string $name 名字
* @return unknow
*/';
preg_match('#/\*[\*\s]+(\S+)#',$test,$m);
echo '函数名称:'.$m[1]."\n";
echo "参数:\n";
preg_match_all('/@param.*(\$\w+) (\S*)/',$test,$m);
foreach ($m[1] as $k => $v){
echo $v.':'.$m[2][$k]."\n";
}
?>
/**
* 方法名
* @param int $id ID名
* @param string $name 名字
* @param $noParam 没变量类型的参数
* @return unknow";
*/
<?php
$test = '
/**
* 方法名
* @param int $id ID名
* @param string $name 名字
* @param $noParam 没变量类型的参数
* @return unknow
*/';
preg_match('#/\*[\*\s]+(\S+)#',$test,$m);
echo '函数名称:'.$m[1]."\n";
echo "参数:\n";
preg_match_all('/@param ?(.*) (\$\w+) (\S*)/',$test,$m);
foreach ($m[2] as $k => $v){
echo $v.':'.$m[3][$k].',类型:'.($m[1][$k]?$m[1][$k]:'未知')."\n";
}
?>
<?php
class test{
/**
* 测试
* @param string $test1 参数1
* @return bool
*/
function t2($test1){
}
}$r=new ReflectionMethod ('test','t2');print_r($r->getDocComment());?> 老实说我自己都没用过这个,,先抛个石头,问下路. 看看有没有高手