如何确定PHP中闭包/匿名函数的参数个数

时间:2013-03-06 20:59:09

标签: php closures anonymous-function

如何确定闭包声明的参数个数以便在闭包之外使用?例如:

$myClosure = function($arg1, $arg2, $arg3){

}

$numArgs = someMagicalFunction($myClosure);
echo("that closure expects $numArgs arguments");

是否有某些功能可以满足我的需求?

1 个答案:

答案 0 :(得分:6)

使用反射。请参阅此文章:http://www.bossduck.com/2009/07/php-5-3-closures-and-reflection/

$func = function($one, $two = 'test') {
    echo 'test function ran'.PHP_EOL;
};
$info = new ReflectionFunction($func);
var_dump(
    $info->getName(), 
    $info->getNumberOfParameters(), 
    $info->getNumberOfRequiredParameters()
);

返回:

string(9) "{closure}"
int(2)
int(1)