从预定义的类中获取实际方法参数

时间:2015-04-01 23:07:44

标签: php reflection

我正在调试PHP5.4中的服务定位器和代理对象,错误是Reflection无法从预定义的类方法中正确获取参数,但是从用户定义的方法中运行良好。

示例:

# proxy class
# arguments are pre-populated
$rc = new ReflectionClass('PDOStatement');
var_dump($rc->getMethod('fetchAll')->getParameters());

会打印

array (size=3)
  0 => &
    object(ReflectionParameter)[5]
      public 'name' => string 'how' (length=3)
  1 => &
    object(ReflectionParameter)[6]
      public 'name' => string 'class_name' (length=10)
  2 => &
    object(ReflectionParameter)[7]
      public 'name' => string 'ctor_args' (length=9)

该名称与http://php.net/manual/en/class.pdostatement.php

中的文档明显不同
public array fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

ArrayObject中更多失败,缺少2个参数

# service locator
# arguments (__construct) are pre-populated
$rc = new ReflectionClass('ArrayObject');
var_dump($rc->getConstructor()->getParameters());

会打印

array (size=1)
  0 => &
    object(ReflectionParameter)[4]
       public 'name' => string 'array' (length=5)

文档http://php.net/manual/en/class.arrayobject.php

public __construct ([ mixed $input = [] [, int $flags = 0 [, string $iterator_class = "ArrayIterator" ]]] )

有没有办法获得预定义类方法的真实参数? 请不要讨论反模式服务定位器。

感谢

0 个答案:

没有答案