【问题标题】:How to display full docblocks for inherited methods in PhpDocumentor?如何在 PhpDocumentor 中显示继承方法的完整文档块?
【发布时间】:2011-10-15 22:59:47
【问题描述】:

我目前有一个代码,其中有一个定义了一些具体方法的抽象父类,子类扩展了这个父类,并将使用具体方法。例如:

<?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 文档中,我看到我的 bar() 函数在方法摘要和方法的详细描述中都有很好的记录......但是我的继承的 foo() 函数仅被声明为继承我需要点击一个链接来查看它的完整文档,甚至只是看到它可以被这个函数调用。我看到的一个例子显示在图像here 中。 (我是新用户,所以不能放图片在这里……)

根据PhpDocumentors documentation,我应该能够以某种方式看到Docblock,但我不知道该怎么做:

1.2.0 版中的新增功能,DocBlock 由子类、变量和方法继承。

当从命令行调用 phpdoc 时,我到处寻找开关或要运行的东西,但没有找到任何东西。

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

【问题讨论】:

  • 我开始认为这是不可能的,可悲的是。这让我吃惊,但似乎就是这样。

标签: inheritance documentation abstract phpdoc


【解决方案1】:

如果不重新声明子类中的方法,那么我认为各种输出转换器的结构只会向您显示继承方法的列表。一些转换器将至少包含来自 docblock 的方法的简短描述 (HTML:Smarty:PHP),而其他转换器则不包含 (HTML:frames:default)。

不,没有可用于修改此行为的运行时配置或开关。这只是关于如何编写输出转换器来构建结果文档的问题。

现在,如果您要在子类中重新声明该方法,无论是重写父方法还是只是为父类的抽象方法实际实现一个具体方法,那么您在父类中编写的许多方面然后方法的 docblock 将在子方法的文档中可见。

按照您的示例,这可能最好通过具有抽象方法的抽象类来证明,并且它会得到完整的文档。然后,子类实现该方法,但没有自己的文档块(因为按照惯例,它应该完全遵循抽象父方法文档块中的描述)。例如,此文档继承应该对参数可见,并且返回标签可见。

这种继承行为在 Eclipse 等 IDE 中也可见。如果 phpDocumentor 未能在子类文档中显示这种继承,这是一个错误。

【讨论】:

  • 谢谢ashnazg - 你谈论HTML:Smarty:PHP 的地方对我来说是新的。在我可以尝试的不同转换器的某个地方是否有更多信息? HTML:Smarty:PHP 在布局中不如 HTML:default:default 好,但它更好地显示了继承。其他选项的任何线索?
  • 我实际上发现转换器 HTML:Smarty:HandS 为其他感兴趣的人做了我想做的大部分事情。现在只需弄清楚如何更改侧边栏上的顺序,使类位于顶部...
【解决方案2】:

试试 Docblox。类似,但输出是 AJAX 黄金。唯一缺少的是Web 界面。我将它安装为 pear 包。

【讨论】:

  • 我可能会调查一下,但 PHPdocumentator 对我来说工作得很好,除了这个例外。所有的数据都已经存在并且存在,它只需要显示它。我确信我只需要在某处激活一个功能或开关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多