PHP检测函数是否有可选参数


PHP detecting if a function has an optional argument

假设我有这个类:

class Test
{
    public function foo($argument = "") {
        //do something
    }
    public function bar($argument) {
        //do something else
    }
}

有没有什么方法可以判断foo的参数是可选的,bar的参数不是通过PHP的?

我尝试过使用ReflectionMethod中的getParameters(),但这只是返回名称,而不是任何可以告诉我它是否可选的信息。

使用反射方法,getParameters将返回一个ReflectionParameter s的数组。您可以在ReflectionParameter上检查isOptional方法。

当您回显或打印ReflectionParameter时,它将返回其名称。

以下是

的示例

我不完全确定检测函数是否有可选参数是什么意思。

但是这样做有什么不对?

public function foo($argument = "") {
    if($argument != "") {
       .... argument is set
    }
}

编辑:我明白你现在的意思了。是的,你可以对使用反射

$reflection = new ReflectionMethod($className, $methodName);
$params = $reflection->getParameters();
foreach ($params as $param) {
    echo $param->getName();
    echo $param->isOptional();
}