PHP:函数参数的名称

Kon*_*ter 5 php anonymous-function

我需要获取匿名函数参数的名称.

例如:

$func = function ( $param1, $param2 ) { ... };
$names = DO_SOMETHING($func); 
// after this $names should become something like array('param1', param2')
Run Code Online (Sandbox Code Playgroud)

从理论上讲,它是可能的,因为它var_dump($func)$funcClosure类的对象并具有parameter属性array('param1', 'param2').

php.net上的官方文档描述了Closure类的方法,它可以帮助我.

我试图直接访问这个属性,但PHP死于致命错误:Closure object cannot have properties.

我试图获得对象变量,get_object_vars但似乎parameter属性被解析为私有(无论如何,get_object_vars不会返回它).

我知道的唯一一种方法 - 截取输出var_dump并解析它,但是我们很容易理解这不是我们编写脚本的方式=)

对不起,我的英语不好.

Yos*_*shi 9

目前无法尝试此操作,但请查看:

http://www.php.net/manual/en/class.reflectionfunction.php

特别

http://www.php.net/manual/en/reflectionfunctionabstract.getparameters.php

也许这会成功.

编辑:试试这个:

$func = function ( $param1, $param2 ) {
    /* some code */
};

$refFunc = new ReflectionFunction($func);
foreach ($refFunc->getParameters() as $refParameter) {
    echo $refParameter->getName(), '<br />';
}
Run Code Online (Sandbox Code Playgroud)