不太确定最好的标题,但我会尽我所能解释我的要求。假设我有以下文件:
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
。
基本上,我的问题是:如何MyCustomClass.php
在只知道FooClass
,Bar
和,的情况下获得完全限定的名称BazSpecial
?
我不想使用文件解析器,因为这会影响性能。我希望能够做类似的事情:
$class = new ReflectionClass('MyCustomClass');
...
$class->getUsedClass('FooClass'); // FooNamespace\FooClass
$class->getUsedClass('Bar'); // BarNamespace\BarClass
$class->getUsedClass('BazSpecial'); // BazNamespace\BazClass
我该怎么做呢?