[英]PHPDoc for fluent interface in subclass?
是否有任何原因讓我的IDE(實際上是PHPStorm)理解:
$student->setName('Marco');
將返回Student
的實例,而不重新定義子類中的setName()
(僅用於添加PHPDoc注釋)?
class Person
{
private $name;
/**
* @param string $name
* @return Person
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
}
class Student extends Person { }
你必須像這樣的評論覆蓋你的方法標簽
/**
* @method Student setName($name)
*/
class Student extends Person { }
您可以在docblock中返回$ this而不是person
根據我的經驗,我發現使用組合方法很有幫助。 我的IDE(帶有PHP插件的IntelliJ IDEA)抱怨我的流暢方法在以后將該值用作另一個方法調用的參數時返回$this
。 通過將PHPDoc注釋更改為:
/**
* @param string $name
* @return $this|Person
*/
IDE更快樂,PHPDoc為用戶提供更多信息。
順便提一下,通過說該方法在PHPDoc中返回$this
,這是一個很好的指示,該方法正在實現一個流暢的接口。 說它返回Person
,雖然技術上准確,但並不一定表示流暢。 例如,創建新 Person
對象並返回它的方法也可以使用相同的注釋,但它不會流暢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.