2016-05-13 9 views
1

次のコード構造では、PHP 5.6でFooFactory-> createServiceメソッドの戻り値型を取得できる方法がありますか?私はReflectionClassクラスとReflectionMethodクラスを試しましたが、wayを見つけることができませんでした。事前に感謝します。PHP:メソッドの戻り値の型を取得する方法はありますか?

class FooFactory implements FactoryInterface { 
    public function createService(/*args*/) 
    { 
     $foo = new Foo(); 
     // ... 
     //inject dependencies 
     // ... 
     return $foo; 
    } 
} 

class Foo { 
    /*...methods...*/ 
} 

編集:FooFactoryのインスタンスを作成せずにクラス名を取得する必要があります。

+4

ない、あなたが....メソッドの実際のコードを分析する必要があると思いますPHP7は戻りtypehintingを紹介し、それがありますオプションのみ –

+1

http://php.net/manual/ja/migration70.new-features.php –

答えて

2

PHP5を使用することはできません。

変数を宣言すると、ヒントになる可能性があります(これはソリューションよりも回避策です)。これにより、作成したサービスに属するメソッドなどがIDEに公開されます。

例:

/* @var \MyFooService $myFooService */ 
$myFooService = FooFactory->createServixce('MyFooService'); 

は、変数の型のエディタに通知します@var宣言であることに注意してください。

構文ビーイング:

/* @var [CLASS_NAME] [VARIABLE] */ 

がUPDATE:

はちょうどあなたがFooFactoryのインスタンスを作成したくない見ました。 デフォルトでは、ファクトリメソッドは静的ではありませんか?

ので:

$fooFactory = new FooFactory(); 
$fooService = FooFactory->getService('FooService'); 

になる:PHP 5で

$fooService = FooFactory::getService('FooService'); 
関連する問題