我有一個方法返回當前對象,我如何記錄這個?我應該使用@return self,這個還是當前的課程?
/**
* set something
*
* @return this
*/
public function setSomething(){
// ...
return $this;
}
或者我應該做@return self
或@return Current_Class_Name
?
我有一個方法返回當前對象,我如何記錄這個?我應該使用@return self,這個還是當前的課程?
/**
* set something
*
* @return this
*/
public function setSomething(){
// ...
return $this;
}
或者我應該做@return self
或@return Current_Class_Name
?
@return Current_Class_Name
肯定會工作,我更喜歡。
@return self
也可以在某些程序中正常工作。
@return this
不好,因爲這不是一個typename。
「return Current_Class_Name」目前效果最好,因爲它可以讓IDE自動完成。 在phpDocumentor [1]和Eclipse PDT [2]中有功能請求來識別「return $ this」。 [1] - http://pear.php.net/bugs/bug.php?id=16223 [2] - https://bugs.eclipse.org/bugs/show_bug.cgi?id= 276082 – ashnazg
PhpStorm確實支持'@return self' – sarunast
如果我想返回子類而不是我寫該方法的基類,該怎麼辦? –
/**
* set something
*
* @return self
*/
public function setSomething(){
// ...
return $this;
}
您可以使用 「自我」 類型@param或@return ..
PHPDoc的建議 '自我' 是指在對象自我..
來源:http://www.phpdoc.org/docs/latest/references/phpdoc/types.html
這適用於子類很差。如果子類不覆蓋它,解釋器不知道具有相同子類的對象必須被返回。 – SOFe
有一個PHP Standards Recommendation (PSR)目前在草案(PSR-5) that proposes@return $這個是用來表示相同的實例返回。
$ this,此類型所應用的元素與給定上下文中的當前類相同。因此,這種類型是更嚴格的靜態版本,此外,返回的實例不僅必須是相同的類,而且也是相同的實例。
此類型通常用作實現Fluent接口設計模式的方法的返回值。
目前流行的IDE如PhpStorm和Netbeans使用這種表示法。
這個問題很舊,但我只想分享給大家!
至少對於使用的NetBeans 8.1的那些..這個符號讓代碼自動完成的IDE很好地工作:
/**
* Method that returns $this instance (using late state binding)
* @return static
*/
public function iWillReturnMyself () {
return $this;
}
我說至少爲NetBeans8.1用戶,但可能在舊版本和/或其他IDE上工作 =]
netbeans 8.2作品也 – Tebe
相關,for static:http://stackoverflow.com/questions/5858031/php doc-and-late-static-or-dynamic-binding – Greg