2016-10-18 157 views
0

在下面的代碼中,@return加下劃線爲紅色。我希望它能夠返回一個接口,因爲這是所有不同的供應商適配器實現的。爲什麼PHP代碼中的PHPDoc錯誤通過此代碼?

/** 
* VendorFactory constructor. 
* @param Model $model 
* @return \Traders\Interfaces\VendorAdapterInterface 
*/ 
public function __construct(Model $model) 
{ 
    return $this->createAdapter($model); 
} 

這是createAdapter的代碼,它沒有帶紅色下劃線的@return。

/** 
* @param Model $model 
* @return \Traders\Interfaces\VendorAdapterInterface 
*/ 
public function createAdapter(Model $model) 
{ 
    $type = str_replace('App\Models\\', '', get_class($model)).'s'; 
    $fqcn = '\Traders\Adapters\\'.$type.'\\'.ucfirst(strtolower($model->name)); 
    return new $fqcn($model); 
} 

我試圖做/ **的docblock,讓PHPStorm輸入什麼它認爲是返回值,它只是不斷給我

@return mixed 
+0

因爲'$ fqcn'是一個變量,在這種情況下。你實際上並沒有給它一個具體的課程。忽略風暴並保持原樣或創建工廠。 – Andrew

+4

在構造函數中等待..'return'? – Pete

+0

感謝Pete,這不應該是構造函數而是初始化方法。 –

回答

1

您的問題是在構造函數中return。 構造函數不接受返回值,它們在實例化該類的實例時執行。

+0

感謝我的壞不應該是在構造函數應該已經初始化的方法:) –

+1

很高興幫助!公平起見,我認爲在技術上你可以在__construct函數上設置返回值(因爲它們與普通函數一樣),並像$ ret = $ obj - > __ construct()那樣使用它們。無論如何,這被認爲是一種不好的做法,並且沒有人接受。 –

相關問題