4

是否有可能在 PHP 中获得匿名函数预期的参数数量?我知道 ReflectionMethod,但这似乎只有在该方法是在类上定义的情况下才有效。在我的例子中,匿名函数要么有 1 个参数,要么有 2 个参数。我宁愿正确地进行检查,而不是将第一个调用包装在 try/catch 中,如果第一个参数失败,则使用 2 个参数再次尝试。

4

1 回答 1

7

试试这个:

// returns the arity of the given closure
function arity($lambda) {
    $r = new ReflectionObject($lambda);
    $m = $r->getMethod('__invoke');
    return $m->getNumberOfParameters();
}

几个月前,我在这里更详细地写了这个:http: //onehackoranother.com/logfile/2009/05/finding-the-arity-of-a-closure-in-php-53

于 2010-01-31T23:11:57.497 回答