我想做什么
我想检查一个闭包(作为变量传递),以确定它需要多少个参数。从本质上讲,我想在传统意义上重载一个闭包,只是通过区别对待它。
function someMethod(Closure $callback) {
$varA;
$varB;
$varC;
if($callback->getNumArgs() == 3) {
$callback($varA, $varB, $varC);
}
else {
$callback($varC, $varA);
}
}
如果可以更好地解释,请告诉我,以便进行编辑
背景信息
根据闭包需要多少个参数,我将调整它的调用方式。我需要这样做来通过循环节省昂贵的迭代。
请注意
- 我正在使用PHP5.3
- 作为提醒,我不想执行该功能,因此无法使用
func_num_args
带反射:
$ref = new ReflectionFunction(function($foo, $bar) {});
echo $ref->getNumberOfParameters(); // 2