Offset and cursor pagination with API-ready serialization--paginate any result set without coupling to your data layer.
composer require marko/paginationuse Marko\Pagination\OffsetPaginator;
$paginator = new OffsetPaginator(
items: $items,
total: 150,
perPage: 15,
currentPage: 3,
);
$paginator->hasMorePages(); // true
$paginator->lastPage(); // 10
$paginator->toArray(); // ['items' => [...], 'meta' => [...], 'links' => [...]]Full usage, API reference, and examples: marko/pagination