使用源代码中的函数token_get_all()帮助我查找函数"funcname"的所有参数。这听起来很简单,但有许多特殊的选项,例如数组作为参数或调用静态方法作为参数。也许有一个简单的通用解决方案?
UPD:
我需要你调用它时传递的函数参数。让它们位于文件的外部分析中。例如,有一个php文件:
<?php
funcname('foo');
funcname(array('foo'), 'bar');
分析仪应按以下方式开始:
$source = file_get_contents('source.php');
$tokens = token_get_all($source);
...
因此,需要获得这样的列表:
[0] => array('foo'),
[1] => array(array('foo'), 'bar')
与其使用标记化器,不如使用反射。在这种情况下,使用ReflectionFunction
:
function funcname ($foo, $bar) {
}
$f = new ReflectionFunction('funcname');
foreach ($f->getParameters() as $p) {
echo $p->getName(), "'n";
}
此输出
foo
bar
您还可以使用此类和相关类(如ReflectionParameter
)来查找有关函数及其参数的更多信息,例如参数是否是可选的以及其默认值是什么。