Допустим, у меня есть этот абстрактный класс таблицы базы данных:
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[]
, Это возможно?
Есть ли лучший способ сделать это?
phpDocumentor определяет static
а также self
для указания типа, возвращаемого унаследованным методом.
self
Объект класса, где этот тип использовался, если он унаследован, он все равно будет представлять класс, в котором он был первоначально определен.
static
Объект класса, где использовалось это значение, если он унаследован, он будет представлять дочерний класс. (см. позднее статическое связывание в руководстве по PHP).
Так статический это тип, который вам нужен для возврата дочернего типа вместо родительского.
/**
* Returns the records.
* @return static[]
*/
public function getRecords() {
return $this->records;
}
Других решений пока нет …