$totalPages - $half) { $start = max(1, $totalPages - $maxVisiblePages + 1); $end = $totalPages; } else { $start = $page - $half; $end = min($totalPages, $page + $half); } /** * @var array $range */ $range = range($start, $end); return new PaginatorResult( $page, $start == 1, $end == $totalPages, $totalPages, $totalPages, $range ); } }