Wil*_*gan 5 php closures overloading
我想检查一个闭包(作为变量传递)以确定它期望的参数数量.从本质上讲,我想在传统意义上重载一个闭包,只是以不同的方式处理它.
function someMethod(Closure $callback) {
$varA;
$varB;
$varC;
if($callback->getNumArgs() == 3) {
$callback($varA, $varB, $varC);
}
else {
$callback($varC, $varA);
}
}
Run Code Online (Sandbox Code Playgroud)
如果可以更好地解释这一点,请告诉我,以便进行编辑.
根据闭包所用的参数数量,我将调整它的调用方式.我需要这样做以通过循环节省昂贵的迭代.
func_num_argsGor*_*don 10
有了反思:
$ref = new ReflectionFunction(function($foo, $bar) {});
echo $ref->getNumberOfParameters(); // 2
Run Code Online (Sandbox Code Playgroud)