2013-07-01 25 views
0

我不知道如何記錄我的自動完成方法。phpdoc @return延遲加載

我的模型Training有一個getAnimators()方法,它返回實現SeekableIterator和Countable的Db_MysqlResult。這Db_MysqlResult將創建我的動畫對象時,我遍歷就可以了,例如:

<?php 
foreach ($training->getAnimators() as $animator) { 
    // Autocompletion shows me next, seek, etc. not getName 
    echo $animator->getName(); 
} 
?> 

我可以寫@返回動畫師[]在我getAnimators(),即使因爲它返回一個Db_MysqlResult這是不是真的?

在此先感謝您的幫助。

回答

0

如果您正在尋找你的$動畫變量來自動完成它的方法,你最好的選擇可能是在裏面添加@var行提示:

/** @var Animator $animator */ 
echo $animator-> 

有些IDE必須認識到,@var能力行作爲類型提示並用它來給你自動完成。但是,我不知道任何IDE都會識別$ training-> getAnimators()的返回值,並自動知道$ animator的類型,只需將它們綁定在foreach()中即可。

+0

這就是我正在做的,但我希望避免它。我的問題不是如何爲我的var $ animator獲得自動完成,而是如何根據我的對象加載的方式來編寫我的phpdoc。 – DjLeChuck

+0

好的,我被你的第一個陳述拋棄了,然後,「如何記錄我的自動完成方法」。 根據你的描述,getAnimators()確實預先生成了Animator對象並返回了SeekableIterator集合(就像一個數組,但不完全是一個數組),那麼在我看來,「@return Animator []」 Animator對象的集合是記錄它的「正確」方式。它應該顯示「Animator []」而不是「Animators []」,因爲「陣列」的每個成員都是單個Animator實例。 – ashnazg

+0

當我在SeekableIterator的「當前」方法中時,該類將被實例化,所以起初我的集合不包含我的Animator對象,那就是問題所在。 但正如你所說寫@return Animator []是好的,所以我會寫它。 – DjLeChuck