2011-10-15 83 views
0

我目前有代碼,其中有一個抽象的父類定義了一些具體的方法,並且子類擴展了這個父類,並將使用具體的方法。例如:如何在PhpDocumentor中顯示繼承方法的完整文檔塊?

<?php 

abstract class abstract_class { 
    /** 
    * I document foo. 
    */ 
    public function foo() { 
     echo "I am the foo function!"; 
    } 
} 

class child_class { 
    /** 
    * I document bar. 
    */ 
    public function bar() { 
     echo "I am the bar function!"; 
    } 
} 

?> 

在我的child_class文檔,我看我的吧()函數有據可查的,無論是在方法摘要和方法的詳細描述......不過我富()函數,這是繼承,只聲明爲繼承,我需要按照鏈接查看其完整文檔,甚至只是看到它可以通過此函數調用。我看到的示例顯示在圖像here中。 (我不能把圖像在這裏,因爲我是一個新的用戶...)

按照PhpDocumentors documentation我應該能夠看到的docblock莫名其妙,但我不知道怎麼做:

新版本1.2.0中,DocBlock的繼承由子類,變量和方法。

我從一個命令行調用phpdoc但沒有找到任何東西時,我遍尋了一個開關或運行的東西。

如何以我想要的方式顯示我想要的信息?

+0

我開始認爲這是不可能的,可悲的是。這令我震驚,但似乎是這樣。 – csalvato

回答

1

如果您不重新聲明子類中的方法,那麼我認爲各種輸出轉換器的結構將只顯示一個繼承方法的列表。某些轉換器至少會包含來自docblock(HTML:Smarty:PHP)的方法的簡短描述,而其他轉換器則不會(HTML:frames:default)。

不,沒有可用於修改此行爲的運行時配置或開關。這只是一個輸出轉換器如何寫入結構文檔的問題。

現在,如果您要在子類中重新聲明該方法,無論是重寫父級方法還是實際實現父級抽象方法的具體方法,那麼您在父方法的docblock將在子方法的文檔中可見。

遵循你的例子,這可能最好由具有抽象方法的抽象類來證明,並得到完整的記錄。然後,子類實現該方法,但沒有自己的docblock(因爲按照慣例,它應該完全遵循抽象父方法docblock中的描述)。例如,該文檔繼承應該可見,param和return標記可見地被繼承。

這種繼承行爲在Eclipse等IDE中也是可見的。如果phpDocumentor無法在子類文檔中顯示這種類型的繼承,那就是一個bug。

+0

Thanks ashnazg - 您談論HTML的位:Smarty:PHP對我來說是新手。我可以嘗試在不同的轉換器上有更多的信息嗎?HTML:Smarty:PHP在佈局上幾乎不如HTML:default:default,但它更好地顯示了繼承。在其他選項上的任何線索? – csalvato

+0

實際上,我發現轉換器HTML:Smarty:HandS對於其他感興趣的方面做了大部分我想做的事情。現在只需瞭解如何更改側邊欄上的順序,以使類位於頂層...... – csalvato

0

嘗試Docblox。它是類似的,但輸出是AJAX黃金。唯一缺少的是Web界面。我把它安裝成梨包。

+0

我可能會研究它,但PHPdocumentator對我來說工作得很好,但有一個例外。所有的數據已經存在並存在,只需要顯示它。我確定只有一個功能或開關需要在某處激活。 – csalvato