假设我有这个类:
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();
}