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

时间:2016-04-05 23:23:22

标签: php

假设我有这门课程:

for (int i = 0; i < 10; i++) {
    int x = 0;
    x += i;
}

有什么方法我可以判断foo的参数是否是可选的,并且bar的参数不是通过PHP进行的?

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

2 个答案:

答案 0 :(得分:3)

使用反射方法getParameters将返回ReflectionParameter个数组。您可以在isOptional上查看ReflectionParameter方法。

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

此处an example

答案 1 :(得分:0)

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

但这样做有什么不对?

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();
}