最適なタイトルはよくわかりませんが、私が求めていることをできる限り説明します。次のファイルがあるとします。
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
どうすればこれを行うことができますか?