2017-03-07 54 views
1

enter image description here我可以告訴PhpStorm函數的返回類型是什麼嗎?

所以,如果我有一個函數,並在PHPDoc的我指定它會返回一個SqsProcessResult對象,然後調用一個函數來創建這些對象的新的,但該功能的PHPDoc的說的Object返回類型(因爲它是一個通用的工廠功能)PhpStorm發出橙色警告。

我可以註釋或以其他方式告訴PhpStorm返回類型將是SqsProcessResult

回答

5

是的,你可以...但由於問題的性質,它可能不是最乾淨/優雅的解決方案(至少這是別人可能會說的)。

幾個選項:


#1。只要抑制這條線的檢查。在高亮區域

  • 將插入符號,按Alt + Enter鍵(或通過「燈泡」圖標會得到相同的菜單)
  • 找到最適合的入門..並按箭頭向右鍵(或鼠標點擊這個小三角形圖標)展開子菜單
  • 一旦出現 - 選擇Suppress for statement選項 - 一個新的內嵌PHPDoc註釋將被添加到正上方,指示PhpStorm忽略下一行中的特定檢測。

會是這樣的:

/** @noinspection PhpIncompatibleReturnTypeInspection */ 
return \Yii::createObject(...); 
  • 優點:無論從IDE側警告
  • 缺點:額外PHPDoc的評論,以滿足IDE(這是需要考慮的情況下)

#2。使用一些中間變量,您可以鍵入提示。

添加這樣的事情,而不是現有的單行:

/** @var SqsProcessResult $res */ 
$res = \Yii::createObject(...); 
return $res; 
  • 優點:無抑制評論
  • 缺點:額外的變量(現在仍然額外PHPDoc的註釋)基本上沒有理由

這一個主要可以用於更長的方法,其中這樣的變量(通用Object)將在函數體的開始/中間創建,然後稍後使用。


#3。玩.metadata功能,並提供實際\Yii::createObject()的解析邏輯(所以IDE根據輸入參數選擇合適的類)。

https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

這是怎麼了不少工具工作:IDE幫手Laravel,Symfony的幫手,DI容器傭工等

+1

謝謝!第一種選擇是我正在尋找的,以避免純粹爲代碼檢查創建變量。僅供參考,註解爲'/ ** @noinspection PhpIncompatibleReturnTypeInspection * /' –

+1

檢查更新的答案 - 選項#3。如果做得好 - 不需要評論(但你最好在Yii專用論壇上提問 - 他們應該有一個解決方案,我會假設)。不是這一個...但是在這些行中:http://yiifeed.com/news?id=72 – LazyOne

相關問題