PHP获取方法参数默认值


php get method arguments default values

我想获得类中的方法列表以及它们的参数和默认值。我怎么能做到呢?下面是我使用的代码:

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