Как я могу динамически проверить количество ожидаемых аргументов анонимной функции в PHP? - PullRequest
3 голосов
/ 01 февраля 2010

Можно ли получить ожидаемое количество аргументов от анонимной функции в PHP? Я знаю о ReflectionMethod, но, похоже, это работает, только если метод определен в классе. В моем случае анонимная функция будет иметь один или два аргумента. Я бы предпочел сделать проверку правильно, вместо того, чтобы заключить первый вызов в try / catch и повторить попытку с двумя параметрами, если первый не удался.

1 Ответ

5 голосов
/ 01 февраля 2010

Попробуйте это:

// 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

...