1. Go to this page and download the library: Download tobento/service-pagination library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tobento / service-pagination example snippets
use Tobento\Service\Pagination\Pagination;
$pagination = new Pagination(
totalItems: 200,
currentPage: 3,
);
<?= $pagination->render()
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\PaginationInterface;
use Tobento\Service\Pagination\UrlGenerator;
use Tobento\Service\Pagination\MenuRenderer;
$pagination = new Pagination(
totalItems: 200,
currentPage: 3,
itemsPerPage: 50,
maxPagesToShow: 10,
maxItemsPerPage: 1000,
urlGenerator: (new UrlGenerator())->addPageUrl('#{num}'),
renderer: new MenuRenderer('prev', 'next'),
);
var_dump($pagination instanceof PaginationInterface);
// bool(true)
use Tobento\Service\Pagination\Pagination;
$pagination = new Pagination(totalItems: 200);
$newPagination = $pagination->withCurrentPage(6);
var_dump($pagination === $newPagination);
// bool(false)
use Tobento\Service\Pagination\Pagination;
$pagination = new Pagination(totalItems: 200);
$newPagination = $pagination->withItemsPerPage(30);
var_dump($pagination === $newPagination);
// bool(false)
use Tobento\Service\Pagination\Pagination;
$pagination = new Pagination(totalItems: 200);
$newPagination = $pagination->withMaxPagesToShow(6);
var_dump($pagination === $newPagination);
// bool(false)
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\UrlGenerator;
$pagination = new Pagination(totalItems: 200);
$newPagination = $pagination->withUrlGenerator(new UrlGenerator());
var_dump($pagination === $newPagination);
// bool(false)
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\MenuRenderer;
$pagination = new Pagination(totalItems: 200);
$newPagination = $pagination->withRenderer(new MenuRenderer());
var_dump($pagination === $newPagination);
// bool(false)
use Tobento\Service\Pagination\Pagination;
$pagination = new Pagination(
totalItems: 200,
currentPage: 12,
itemsPerPage: 50,
);
if (! $pagination->hasCurrentPage()) {
// handle if current page does not exist.
// redirect, page not found or whatever fits your application design.
$pagination = $pagination->withCurrentPage(1);
}
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\MenuRenderer;
$pagination = new Pagination(
totalItems: 200,
currentPage: 3,
itemsPerPage: 30,
renderer: new MenuRenderer(previousText: 'prev', nextText: 'next'),
);
echo $pagination;
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\RendererInterface;
use Tobento\Service\Pagination\PaginationInterface;
use Tobento\Service\View\ViewInterface;
use Tobento\Service\View\View;
use Tobento\Service\View\PhpRenderer;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
use Tobento\Service\View\Data;
use Tobento\Service\View\Assets;
$view = new View(
new PhpRenderer(
new Dirs(
new Dir('home/private/views/')
)
),
new Data(),
new Assets('home/public/src/', 'https://www.example.com/src/')
);
class ViewRenderer implements RendererInterface
{
public function __construct(
private ViewInterface $view,
private string $viewToRender = 'service/pagination',
) {}
public function render(PaginationInterface $pagination): string
{
return $this->view->render(
$this->viewToRender,
['pagination' => $pagination]
);
}
}
$pagination = new Pagination(
totalItems: 500,
currentPage: 2,
renderer: new ViewRenderer($view),
);
echo $pagination;
if ($pagination->getTotalPages() > 1) {
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\UrlGenerator;
$urlGenerator = new UrlGenerator();
// url pattern for all pages:
$urlGenerator->addPageUrl(url: 'page/{num}', placeholder: '{num}');
// url pattern for page number 1 only:
$urlGenerator->addPageUrl(url: 'page', placeholder: null, page: 1);
$pagination = new Pagination(
totalItems: 500,
currentPage: 3,
urlGenerator: $urlGenerator,
);
echo $pagination;
use Tobento\Service\Pagination\Pagination;
use Tobento\Service\Pagination\UrlGeneratorInterface;
class CustomUrlGenerator implements UrlGeneratorInterface
{
/**
* Generate the url for the specified page number.
*
* @param int $pageNumber
* @return string The generated url.
*/
public function generate(int $pageNumber): string
{
// generate the url for the specified page number.
return '';
}
}
$pagination = new Pagination(
totalItems: 500,
currentPage: 3,
urlGenerator: new CustomUrlGenerator(),
);
echo $pagination;
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.