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

Кемеровские программисты 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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