我不是很确定最好的标题,但我会尽力解释我的问题。假设我有以下文件:
MyCustomClass.php
<?php
namespace MyNamespace;
use FooNamespace\FooClass;
use BarNamespace\BarClass as Bar;
use BazNamespace\BazClass as BazSpecial;
class MyCustomClass {
protected $someDependencies = [];
public function __construct(FooClass $foo, Bar $bar) {
$someDependencies[] = $foo;
$someDependencies[] = $bar;
}
}
现在,如果我要使用反射,我可以从构造函数中的类型提示获取完全限定类名。然而,我将收到 FooNamespace\FooClass 和 BarNamespace\BarClass,而不是 FooNamespace\FooClass 和 BarNamespace\Bar。我也无法获得对 BazNamespace\BazClass 的引用。
基本上,我的问题是:如何在只知道 FooClass、Bar 和 BazSpecial 的情况下,从 MyCustomClass.php 中获取完全限定名称?
我不想使用文件解析器,因为这会影响性能。我希望能够做到类似以下操作:
$class = new ReflectionClass('MyCustomClass');
...
$class->getUsedClass('FooClass'); // FooNamespace\FooClass
$class->getUsedClass('Bar'); // BarNamespace\BarClass
$class->getUsedClass('BazSpecial'); // BazNamespace\BazClass
我该如何做到这一点?