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() の docblock に記述を入れることで、B::foo() によって自動的に継承される A::foo() の情報の適切なデフォルト動作をオーバーライドすることができます。{@inheritdoc} タグは、B::foo() の説明を記述し、A::foo() からの説明を含めることができるように特別に作成されました。B::foo() の docblock に {@inheritdoc} を配置したことで、A:foo() の説明が B の全体的な説明のどこに表示されるかを正確に制御できるようになりました。

私が実際に目にする {@inheritdoc} の使用の大部分は、説明とタグを親から継承するためだけに使用する必要があると人々が考えている場合です。これは phpDoc 1.x の実装にバグがあり、自然継承が正しく機能しなかったことが原因だと思います

于 2013-08-26T15:01:28.303 に答える