2016-08-24 118 views
0

是否可以在PHP中指定方法的返回類型?PHP依賴注入返回類型,方法鏈接

比如我有ImageInterface它具有方法:

  • 調整大小($ W,$ H)
  • 的setpath($ PATH)
  • getContents()

我有一個使用PHP庫干預的具體類。在調整大小我稱之爲從干預調整大小,然後返回$這在方法結束...

function resize($w, $h) { 
    $this->image->resize($w, $h); 
    return $this; 
} 

這樣做讓我調整大小鏈()和getContents(),所以我可以做一個快速$ image-> resize(400,100) - > getContents(),而不是有兩個單獨的語句。

是否可以指定/約束resize()的返回類型爲ImageInterface的類型?現在它在運行時正確解析,但IDE不知道我們被允許鏈接setPath和getContents。此外,它不會強制將此類型的ImageInterface實現,這可能會導致問題。

+3

作爲PHP7你可以聲明返回類型。 http://php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration –

+0

我認爲這真的取決於你來修改你的IDE規則。 IDE的PHP7語法很快就會出現,但它似乎還沒有完成。 – RiggsFolly

回答

0

您可以使用PHPDoc註釋來聲明返回類型(以及許多其他事物...)。要使其工作,您還必須使用支持這些註釋的IDE(如NetBeans,PHPStorm等)。簡單的例子:

/** 
* Describe what this method does. 
* 
* @param int $w This is the desired width in pixels. 
* @param int $h This is the desired height in pixels. 
* @return ImageInterface 
*/ 
function resize($w, $h) { 
... 
} 

更多細節在這裏:PSR-5: PHPDoc

+0

感謝您的評論,我知道這是一個選項,但我確實在尋找一種以編程方式執行此操作的方式,而不是通過註釋。我想通過PHP代碼實現它的原因是迫使未來的實現返回它們的實例,所以可以在不破壞使用它們的代碼的情況下交換出服務。 – kyle