2013-03-06 2 views
3

Как определить количество аргументов, объявленных закрытием для использования за пределами закрытия? например:Как определить количество аргументов для функции закрытия/аноним в PHP

$myClosure = function($arg1, $arg2, $arg3){ 

} 

$numArgs = someMagicalFunction($myClosure); 
echo("that closure expects $numArgs arguments"); 

Есть ли какая-то функция, которая делает то, что мне нужно?

ответ

6

Использование отражения. Смотрите эту статью: http://www.bossduck.com/2009/07/php-5-3-closures-and-reflection/

$func = function($one, $two = 'test') { 
    echo 'test function ran'.PHP_EOL; 
}; 
$info = new ReflectionFunction($func); 
var_dump(
    $info->getName(), 
    $info->getNumberOfParameters(), 
    $info->getNumberOfRequiredParameters() 
); 

который возвращает:

string(9) "{closure}" 
int(2) 
int(1) 
Смежные вопросы