1

假设我有一些带有 phpdoc 变量的父类:

class Parent
{
    /**
     * This variable stores some important value that
     * is going to be changed in child classes
     * @var integer
     */
    public $variable = 0;
}

现在我正在编写子类,它覆盖了这个变量:

class Child extends Parent
{
    public $variable = 10;
}

所以我的问题是:我应该为 Child 类中的 $variable 编写什么 phpdoc,这样我就不必复制和粘贴变量描述?同样的问题也适用于方法。非常感谢您的帮助。

更新:我在创建 phpdoc 后看到错误后问了这个问题,例如 Child 类中的“No summary for property $variable”。如果我添加此摘要 - 错误就会消失,但无论我在 Child 类中写什么,phpdoc 都会显示来自 Parent 类的描述。我究竟做错了什么?

4

2 回答 2

0

这种行为对我来说听起来像是一个错误。子类属性上完全缺少 docblock 应该会导致父属性 docblock 被完全继承。请在 github 存储库中将其报告为问题。

于 2013-07-22T15:15:28.487 回答
0

您可以@inheritdoc在类成员上使用,例如 const、属性、方法……它们可以从接口、父类、特征……继承。

例子 :

interface MyInterface {
  
  /**
   * My doc
   *
   * @param string $myParam
   *
   * @return string|null
   */
  public function myMethodToImplement( string $myParam ) : ?string;
  
}

abstract class MyParentClass {
  
  /**
   * My inherited doc
   *
   * @param string $myParam
   *
   * @return string|null
   */
  public function myInheritedMethod( string $myParam ) : ?string {}
  
}


class MyClass extends MyParentClass implements MyInterface {
  
  /**
   * @inheritdoc
   */
  public function myInheritedMethod ( string $myParam ) : ?string {
    return parent::myInheritedMethod( $myParam );
  }
  
  
  /**
   * @inheritDoc
   *
   * @param bool $addedParam An added param
   *
   * You can add tags and still inherit from parent doc
   *
   * @throws NotImplementedException
   */
  public function myMethodToImplement ( string $myParam, bool $addedParam = false) : ?string {
    throw new NotImplementedException( __METHOD__ );
  }
}

使用 PHPStorm 之类的 IDE,我还可以使用自动完成功能和快速文档。如果我使用 PHPDocumentor 生成此代码的文档,它也可以工作。

于 2021-07-01T13:56:59.087 回答