我想获取类中的方法列表以及它们的参数和默认值。我怎样才能做到这一点?下面是我使用的代码:
$class = new ReflectionClass($className);
$methods = [];
foreach($class->getMethods() as $method){
if($method->class == $className && $method->name != '__construct' ){
$obj = [];
$obj['controller'] = $className;
$obj['action'] = $method->name;
$obj['params'] = array_map(function($value){return $value->name;}, $method->getParameters());
$methods[] = $obj;
}
}
上述代码的示例结果如下:
Array(
[0] => Array
(
[controller] => Controller,
[action] => function,
[params] => Array
(
[0] => offset,
[1] => limit
)
)
)
如何获取函数参数默认值?
答案 0 :(得分:1)
在参数的array_map
函数中,您可以使用->isDefaultValueAvailable()
插入检查参数是否具有默认值,如果是,请使用->getDefaultValue()
列出它。请根据您的代码查看下面的示例,并根据您的需要进行更改。
而不是
$obj['params'] = array_map(
function($value){return $value->name;},
$method->getParameters()
);
使用
$obj['params'] = array_map(
function($value){
return $value->name.
($value->isDefaultValueAvailable() ? '='.$value->getDefaultValue() : '');
},
$method->getParameters()
);