4

所以,基本上我有以下设置:

class A {

    /**
     * This is some documentation
     */
    public function foo() {}

}

class B extends A {

    /**
     * This documentation is way more specific than in class A
     */
    public function foo() {}

}

当我尝试使用 phpDocumentor2 对此进行记录时,它会在 B 类的方法 foo() 中显示“这是一些文档”,但是我想说“此文档比 A 类更具体”。在 phpDocumenter 1 中,一切看起来都像预期的那样。那么,这里发生了什么?这是 phpDocumentor2 的新默认行为吗?如果是这样,有没有办法改变它?或者这只是一个错误?

注意:在进行研究时,我经常碰到 {@inheritDoc},但我希望有完全相反的行为。

4

1 回答 1

2

您期望在示例中看到的正是应该发生的情况—— A::foo() 应该显示“这是一些文档”,而 B::foo() 应该显示“这个文档比课堂上的更具体一个”。如果这没有发生,那就是一个错误。请在https://github.com/phpDocumentor/phpDocumentor2上打开一个问题。

顺便说一句,{@inheritdoc} 的意图是将 A::foo() 的长描述嵌入到 B::foo() 的整个文档中间的某个位置。通过在 B::foo() 的文档块中进行描述,您可以覆盖 A::foo() 的信息被 B::foo() 自动继承的正确默认行为。{@inheritdoc} 标签是专门创建的,以便您有机会为 B::foo() 编写描述,并且仍然能够包含来自 A::foo() 的描述。您在 B::foo() 的文档块中放置 {@inheritdoc} 意味着您可以准确控制 A:foo() 的描述在 B 的整体描述中出现的位置。

我在野外看到的 {@inheritdoc} 的绝大多数用法是人们认为它必须仅用于从父级继承描述和标签。我认为这是由于 phpDoc 1.x 中的错误实现导致自然继承无法正常工作,因此人们认为必须使用该标签尽管它仍然没有给他们想要的东西。

于 2013-08-26T15:01:28.303 回答