2011-02-15 51 views
0

我需要知道,函数接受多少个参数(包括可选的参数)。不用调用该函数并且不会出错。就像我可以在调用函数之前检查is_callable以避免出现php错误。
例如,在JavaScript中每个函数有一个length属性:获取函数参数的数量OUTSITE in php

Math.sin.length == 1 
Array.prototype.slice.length == 2 

我知道,这将只返回声明的参数,但有一个为与JS语法默认值可选参数不支持。

有没有类似的东西在php
使用php 5.2+就足够了。仅用于全局功能(而非方法)也足够了。
像试图用0参数调用函数,然后用1参数...这样的黑客解决方案非常灰心,导致函数调用成本可能非常高。

回答

4

使用ReflectionFunction

function a($b, $c = 1) { 
    echo $b, $c; 
} 

$rf = new ReflectionFunction('a'); 
echo $rf->getNumberOfParameters(); 

在PHP 5.3,ReflectionFunction支持关闭:

$a = function($b, $c = 1) { 
    echo $b, $c; 
}; 

$rf = new ReflectionFunction($a); 
echo $rf->getNumberOfParameters(); 
+0

我每天都在学习这个网站的新事物。 +1 – 2011-02-15 18:47:19