Как мне указать тип объекта, возвращаемого унаследованным методом в 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

Решение

phpDocumentor определяет static а также self для указания типа, возвращаемого унаследованным методом.

self Объект класса, где этот тип использовался, если он унаследован, он все равно будет представлять класс, в котором он был первоначально определен.

static
Объект класса, где использовалось это значение, если он унаследован, он будет представлять дочерний класс. (см. позднее статическое связывание в руководстве по PHP).

Так статический это тип, который вам нужен для возврата дочернего типа вместо родительского.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]