【问题标题】:php get method arguments default valuesphp获取方法参数默认值
【发布时间】:2015-12-10 12:04:45
【问题描述】:

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

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

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

【问题讨论】:

  • 你的标题应该更具体,写得更好。因为当我看到标题时,我把它误认为是另一个帖子
  • 您可以使用getParameters() 获得一个ReflectionParameter 对象列表。您可以使用类的 getDefaultValue 方法从这些对象中获取默认值。
  • IDK 如果这正是您正在寻找的,但他可能会有所帮助:geneticcoder.blogspot.com/2015/05/…

标签: php methods arguments


【解决方案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()
);

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多