2013-10-30 33 views

回答

4

這個問題似乎與標題相反。你想看看房產,看看吸氣人員的描述,還是想看看吸氣人,看看房產的描述?

我假設你想要兩個。但是,你實際上無法得到。最多一個人的描述可能包含一個鏈接到另一個,但實際上並沒有在其自己的描述中包含其他人的描述。

在這裏,該屬性的描述將包含一個指向獲取者文檔的鏈接。

/** 
* @property $Property is controlled by {@link getProperty()}. 
*/ 
class SomeClass { 

    public function __get($name){ 
     return $this->{'get'.$name}; 
    } 

    /** 
    * Gets the value of {@link $Property}. 
    * @return bool 
    */ 
    public function getProperty(){ 
     return true; 
    } 

} 

這裏有兩個併發症:關於如何神奇的事情出現在實際的文檔(以及如何集成開發環境顯示出來);以及{@link} inline標籤是否實際執行任何操作。

在phpDocumentor 1.x中,魔法材料僅作爲課程本身列出的額外信息出現。在phpDocumentor 2.x中,魔術屬性和魔術方法都會出現,就好像它們是真正的屬性和方法。 2.x行爲是一個很大的改進。對於IDE,我只能說Eclipse PDT,我發現它符合1.x行爲。

在phpDocumentor 1.x中,內聯{@link}標籤確實起作用,並且通常成爲指向它指向的元素(屬性,方法)的文檔的超鏈接。但是,由於1.x實際上並未爲@property和@method標識的魔術事物創建專用文檔,因此「{@link $ Property}」實際上並不指向任何內容。有可能類中的文本docblock顯示「@property $ Property」描述可能正確地顯示到getProperty()的鏈接,但僅僅是因爲getProperty()是一個真正的方法,因此它具有它自己的文檔。如果getProperty()是由「@method getProperty()」表示的魔術方法,那麼「{@link getProperty()}」將不會指向任何位置。

在phpDocumentor 2.x中,內聯{@link}標記沒有實現,因此它最終只會顯示一個可見文本,就像它沒有標記目的一樣。一旦2.x實現了這個內聯標籤,那麼我上面的解決方案應該能夠解決你的兩個潛在問題。

0

我認爲你可以管理最好是

@property $Property 
@see getProperty 
+0

Eah,但是如果我有20個屬性和20個getter,那麼所有這些getters會出現在IDE的文檔結果中,有沒有辦法隱藏不必要的鏈接? –

0

使用類級別PHPDoc的評論

/** 
* @method string getMyFirstProperty() Return value of the property called first 
* @method float getMySecondProperty() Return value of the property called second 
*/ 

是的,魔術干將將會出現在IDE中,這真的是它的有用之處

+0

具有相同名稱的方法已經在類中定義。 –