我想获得类中的方法列表以及它们的参数和默认值。我怎么能做到呢?下面是我使用的代码:
$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
)
)
)
如何获得函数参数默认值?
在参数的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()
);