假设我有这门课程:
for (int i = 0; i < 10; i++) {
int x = 0;
x += i;
}
有什么方法我可以判断foo的参数是否是可选的,并且bar的参数不是通过PHP进行的?
我尝试过使用ReflectionMethod中的getParameters(),但这只是返回名称,而不是任何可以告诉我它是否是可选的信息。
答案 0 :(得分:3)
使用反射方法getParameters
将返回ReflectionParameter
个数组。您可以在isOptional
上查看ReflectionParameter
方法。
当您回显或打印ReflectionParameter
时,它将返回其名称。
答案 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();
}