所以,如果我有一個函數,並在PHPDoc的我指定它會返回一個SqsProcessResult
對象,然後調用一個函數來創建這些對象的新的,但該功能的PHPDoc的說的Object
返回類型(因爲它是一個通用的工廠功能)PhpStorm發出橙色警告。
我可以註釋或以其他方式告訴PhpStorm返回類型將是SqsProcessResult
?
所以,如果我有一個函數,並在PHPDoc的我指定它會返回一個SqsProcessResult
對象,然後調用一個函數來創建這些對象的新的,但該功能的PHPDoc的說的Object
返回類型(因爲它是一個通用的工廠功能)PhpStorm發出橙色警告。
我可以註釋或以其他方式告訴PhpStorm返回類型將是SqsProcessResult
?
是的,你可以...但由於問題的性質,它可能不是最乾淨/優雅的解決方案(至少這是別人可能會說的)。
幾個選項:
#1。只要抑制這條線的檢查。在高亮區域
Suppress for statement
選項 - 一個新的內嵌PHPDoc註釋將被添加到正上方,指示PhpStorm忽略下一行中的特定檢測。會是這樣的:
/** @noinspection PhpIncompatibleReturnTypeInspection */
return \Yii::createObject(...);
#2。使用一些中間變量,您可以鍵入提示。
添加這樣的事情,而不是現有的單行:
/** @var SqsProcessResult $res */
$res = \Yii::createObject(...);
return $res;
這一個主要可以用於更長的方法,其中這樣的變量(通用Object
)將在函數體的開始/中間創建,然後稍後使用。
#3。玩.metadata功能,並提供實際\Yii::createObject()
的解析邏輯(所以IDE根據輸入參數選擇合適的類)。
https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
這是怎麼了不少工具工作:IDE幫手Laravel,Symfony的幫手,DI容器傭工等
謝謝!第一種選擇是我正在尋找的,以避免純粹爲代碼檢查創建變量。僅供參考,註解爲'/ ** @noinspection PhpIncompatibleReturnTypeInspection * /' –
檢查更新的答案 - 選項#3。如果做得好 - 不需要評論(但你最好在Yii專用論壇上提問 - 他們應該有一個解決方案,我會假設)。不是這一個...但是在這些行中:http://yiifeed.com/news?id=72 – LazyOne