Hi, The function func_num_args() doesn't accept any parameters, so calling func_num_args($oClosure) is the same as calling simple func_num_args(). That's why it returns 1 instead of 2, which is I think the expected and correct behavior.
Gergo Erdosi On Dec 21, 2011, at 24:43 , Mark wrote: > Hi, > > Why is func_num_args not working on closures? > Example code (tested on PHP 5.3.8): > > <?php > > class Test > { > public function testClosure($oClosure) > { > echo '<pre>'; > print_r(func_num_args($oClosure)); > echo '<pre>'; > } > } > > $c = new Test(); > $c->testClosure(function($arg1, $arg2){ > }); > > That returns 1 (the num of args in which function the closure is > (testClosure), but not the number of args from the closure itself. > Now Reflection can be used to get the number of args but that is overkill! > Also when you would do print_r(func_get_args($oClosure)); you do get > "something" back including the arguments but no way (that i know) to use > them! > > Just something that i wonder... > I would have expected num args to return the args of the function you > provide it.. > > Kind regards, > Mark -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php