2011-10-15 47 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