我有一个文件,其中包含用户定义的函数和CamelCase名称:
// some useful comments
function functionOne(){
return false;
}
// some other useful comment
function addTwoNumbers($x,$y)
{
return 5;
}
...
我想输出这些按名称排序的函数,如
addTwoNumbers($x,$y)
2 parameters
Comment: some other useful comment
functionOne()
0 parameters
Comment: some useful comments
到目前为止,我得到了一个像这样的函数名列表:
include '../includes/functions.php';
$allFunctions = get_defined_functions();
$userFunctions = $allFunctions['user'];
sort($userFunctions);
foreach ($userFunctions as $functionName) {
echo $functionName. "<br>";
}
我的主要问题是我不知道如何显示每个函数的参数个数和参数变量名。
此外(但我可以忍受)功能名称仅以小写字母显示,因此我无法在CamelCase中读取它们。
最后,评论当然没有显示出来。我在考虑用数组$comments['functionOne']="some useful comments"
编写它们。
所以我的主要问题是你如何得到参数变量名和数字。
答案 0 :(得分:3)
要获得参数编号和名称,可以在PHP中使用Reflection
:
function getFunctionArgumentNames($functionName) {
$reflection = new ReflectionFunction($functionName);
$argumentNames= array();
foreach ($reflection ->getParameters() as $parameter) {
$argumentNames[] = $parameter->name;
}
return $argumentNames;
}
然后你将拥有你的参数名称,返回数组的长度将为你提供多少参数名称。
<小时/> 可以找到更多相关信息:
ReflectionClass
ReflectionObject
Reflection的另一个常见用途是创建文档。编写关于大型框架或应用程序的每个类的每个方法的文档都是极其劳动密集的。相反,Reflection可以自动为您生成文档。它通过检查每个方法,构造函数和类来确定进入和出现的内容。
答案 1 :(得分:0)
使用ReflectionFunction类
例如:
$refFunc = new ReflectionFunction('preg_replace');
foreach( $refFunc->getParameters() as $param ){
print $param;
}
ReflectionFunction类报告有关函数的信息。 查看更多http://php.net/manual/en/class.reflectionfunction.php