我需要获取匿名函数参数的名称。
E.g:
$func = function ( $param1, $param2 ) { ... };
$names = DO_SOMETHING($func);
// after this $names should become something like array('param1', param2')
理论上,这是可能的,因为var_dump($func)
表示$func
是Closure
类的对象,并且parameter
属性为array('param1', 'param2')
。
php.net上的官方文档描述了没有Closure类的方法,这可以帮助我。
我试图直接访问此属性,但PHP死于致命错误:Closure object cannot have properties
。
我试图通过get_object_vars
获取对象变量,但似乎parameter
属性被解析为私有(无论如何,get_object_vars
不返回它。)
我知道的唯一方法 - 拦截var_dump
的输出并解析它,但是我们很容易理解这不是我们编写脚本的方式=)
抱歉我的英语不好。
答案 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 />';
}