【发布时间】:2015-07-30 05:58:27
【问题描述】:
不太确定最好的标题,但我会尽我所能解释我的要求。假设我有以下文件:
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
我该怎么做呢?
【问题讨论】:
标签: php reflection namespaces fully-qualified-naming