PHP:函数参数的名称

时间:2011-05-02 08:26:43

标签: php anonymous-function

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

E.g:

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

理论上,这是可能的,因为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的输出并解析它,但是我们很容易理解这不是我们编写脚本的方式=)

抱歉我的英语不好。

1 个答案:

答案 0 :(得分: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 />';
}