关闭重载:是否可以检查PHP闭包的参数数量而不执行它?

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)

如果可以更好地解释这一点,请告诉我,以便进行编辑.

背景资料

根据闭包所用的参数数量,我将调整它的调用方式.我需要这样做以通过循环节省昂贵的迭代.

请注意

  • 我使用的是PHP5.3
  • 提醒一下,我不想执行该功能因此无法使用 func_num_args

Gor*_*don 10

有了反思:

$ref = new ReflectionFunction(function($foo, $bar) {});
echo $ref->getNumberOfParameters(); // 2
Run Code Online (Sandbox Code Playgroud)