如何在PHPDoc中指定由继承方法返回的对象的类型?

时间:2015-03-09 19:12:16

标签: php inheritance containers phpdoc

假设我有这个抽象的数据库表类:

abstract class DbTable {
    /**
     * Table records
     * @var DatabaseRecordIF[] 
     */
   protected $records;

   /**
    * Returns the records.
    * @return DatabaseRecordIf[]
    */
   public function getRecords() {
       return $this->records;
   }
}

我有一个特定的数据库表类来存储表中的记录:

class MyTable extends DbTable { }

我有一个在该表中定义记录的类:

class MyTableRecord implements DatabaseRecordIf { }

我想告诉phpDocumentor MyTable::getRecords()返回MyTableRecord[],而不仅仅是DatabaseRecordIf[]。这可能吗?

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

phpDocumentor定义staticself以指定继承方法返回的类型。

  

self使用此类型的类的对象,如果继承,它仍将表示最初定义它的类。

     

static   消耗此值的类的对象,如果继承它将表示子类。 (请参阅PHP手册中的后期静态绑定)。

所以 static 是返回子类型而不是父类型所需的类型。

   /**
    * Returns the records.
    * @return static[]
    */
   public function getRecords() {
       return $this->records;
   }