2016-05-13 129 views
1

鑑於以下代碼結構是否有一種方法可以使用PHP 5.6獲取FooFactory-> createService方法的返回類型?我已經嘗試過ReflectionClass和ReflectionMethod類,但找不到方法。提前感謝。PHP:有沒有辦法獲得方法的返回類型?

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

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

編輯:我需要獲取類名而不創建FooFactory的實例。

+4

不是在PHP 5中,你必須分析方法的實際代碼.... PHP7介紹迴歸typehinting,但它是隻有可選 –

+1

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

回答

2

使用PHP5這是不可能的。

你可以(而且這更像是一種解決方法)解決方法在聲明中提示你的變量。這會將屬於已創建服務的方法暴露給IDE。

例子:

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

注意它是@var聲明,會通知你的變量類型的編輯器。

語法之中:

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

UPDATE:

剛剛看到你不想創建FooFactory的一個實例。 默認情況下arn't工廠方法是靜態的?

所以:

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

變爲:

$fooService = FooFactory::getService('FooService'); 
相關問題