php get方法参数默认值

时间:2015-09-14 13:06:11

标签: php methods arguments

我想获取类中的方法列表以及它们的参数和默认值。我怎样才能做到这一点?下面是我使用的代码:

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

如何获取函数参数默认值?

1 个答案:

答案 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()
);