8

最適なタイトルはよくわかりませんが、私が求めていることをできる限り説明します。次のファイルがあるとします。

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\BarClassFooNamespace\FooClassではないBarNamespace\Bar。への参照もありませんBazNamespace\BazClass

基本的に、私の質問は次のとおりです。 、、、およびMyCustomClass.phpのみを知っているときに完全修飾名を取得するにはどうすればよいですか?FooClassBarBazSpecial

これはパフォーマンスを低下させるため、ファイル パーサーは使用したくありません。私は次のようなことができるようにしたい:

$class = new ReflectionClass('MyCustomClass');
...
$class->getUsedClass('FooClass'); // FooNamespace\FooClass
$class->getUsedClass('Bar'); // BarNamespace\BarClass
$class->getUsedClass('BazSpecial'); // BazNamespace\BazClass

どうすればこれを行うことができますか?

4

2 に答える 2