Как узнать, сколько параметров ожидает метод? - PullRequest
1 голос
/ 17 февраля 2012

Используя, вероятно, ReflectionClass, как я могу узнать, сколько параметров ожидает метод?

class Test {
    public function mymethod($one, $two, $three = '') {}
    public function anothermethod($four) {}
}

$test = new Test();
$i = function_im_looking_for(array($test, 'mymethod'));
$i2 = function_im_looking_for(array($test, 'anothermethod'));
echo $i .' - '. $i2;

Приведенный выше код должен вывести: 3 - 1;

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012
function function_im_looking_for($callable) {
    list($class, $method) = $callable;
    $reflector = new ReflectionMethod($class, $method);
    return $reflector->getNumberOfParameters();
}

Все дело в том, чтобы найти ReflectionMethod.

3 голосов
/ 17 февраля 2012

Вы можете использовать getParameters() метод refelectClass, а затем считать его примерно так:

$refMethod = new ReflectionMethod('className',  'functionName');
$params = $refMethod->getParameters();
echo count($params);

Рабочий пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...