Реализация дженериков в LongAwarePaginator Laravel ⇐ Php

Кемеровские программисты php общаются здесь
Anonymous
Реализация дженериков в LongAwarePaginator Laravel

Сообщение Anonymous »

Я хочу улучшить набор текста, связанный с использованием функции нумерации страниц Laravel. Для этого я пытаюсь использовать дженерики через PHPDoc. Я создал собственный класс разбиения на страницы, расширяющий класс Laravel, с докблоками для типов:

Код: Выделить всё

/**
* @template T
*/
class MyPaginator extends LengthAwarePaginator
{
/**
* @return array
*/
public function items(): array
{
return parent::items();
}
}
и я возвращаю его таким методом:

Код: Выделить всё

/**
* @return MyPaginator
*/
public function list(): MyPaginator
{
// ... code omitted for brevity

// $paginator is Laravel's LengthAwarePaginator
$paginator = $query->paginate();

return new MyPaginator($paginator->items(), $paginator->total(), $paginator->perPage(), $paginator->currentPage());
}
но моя среда IDE (PhpStorm) не распознает, что тип, выходящий из items(), является массивом CampaignTemplateListDto, она считает, что он смешанный
код>:
Изображение

На самом деле, я вообще не знаю, откуда это смешивается, потому что и MyPaginator::items(), и lengthAwarePaginator::items() оба являются напечатан так, чтобы возвращать только массив.
Как мне понять, что моя IDE понимает, что MyPaginator::items() возвращает массив объектов CampaignTemplateListDto? п>

Подробнее здесь: https://stackoverflow.com/questions/791 ... epaginator

Вернуться в «Php»