所以,基本上我有以下设置:
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中更具体"。在phpDocumenter1中,一切看起来都像预期的那样。那么,这里发生了什么?这是phpDocumentor2的新默认行为吗?如果是这样,有没有办法改变它?或者这只是一个bug?
注意:在做研究时,我经常碰到{@inheritDoc},但我希望有完全相反的行为。
您希望在您的示例中看到的正是应该发生的事情--A::foo()应该显示"这是一些文档",而B::foo()则应该显示"这个文档比A类更具体"。如果这种情况没有发生,那就是一个错误。请在打开问题https://github.com/phpDocumentor/phpDocumentor2
顺便说一句,{@inheritcoc}的目的是将A::foo()的长描述嵌入B::foo)的整个文档中间的某个位置。通过在B::foo()的文档块中有描述,您可以覆盖B::foo()自动继承的A::foo的信息的正确默认行为。{@inheritcoc}标记是专门创建的,这样您就有机会为B::foo()编写描述,并且仍然可以包含a::foo()中的描述。在B::foo()的文档块中放置{@inheritcoc}意味着您可以精确控制A:foo()的描述在B的整体描述中的位置。
我在野外看到的{@inheritco}的绝大多数用法是,人们认为它只能用于从父级继承描述和标记。我认为这是由于phpDoc1.x中的错误实现,其中自然继承不能正确工作,因此人们认为标签应该使用,尽管它仍然没有给他们想要的东西。