如何通过反射获取构造函数参数的类型?

Tay*_*ell 22 php reflection

我在构造函数参数列表上使用类型提示,如下所示:

public function __construct(FooRepository $repository)
Run Code Online (Sandbox Code Playgroud)

有没有办法使用PHP Reflection API来获取提示类型?换句话说,我想要一个反射函数,我可以调用它以某种方式返回字符串"FooRepository".我试过通过反射获取构造函数,然后获取参数,如果构造函数,但我没有看到任何会给我提示类型的字符串.

sim*_*aun 36

试试吧.

class Foo {
    public function __construct(Bar $test) {
    }
}

class Bar {
    public function __construct() {
    }
}

$reflection = new ReflectionClass('Foo');
$params = $reflection->getConstructor()->getParameters();
foreach ($params AS $param) {
    echo $param->getClass()->name . '<br>';
}
Run Code Online (Sandbox Code Playgroud)

  • @AlixAxel实际上只允许类和数组进行类型提示.你应该首先检查`ReflectionParameter :: isArray()` (5认同)
  • @hek2mgl 甚至更好的 `$param-&gt;getType()-&gt;getName()` 来获取类型。这不需要检索类并且也允许标量类型。 (2认同)