sirprize/paginate

将用户输入的索引范围标准化

2.0.0 2023-02-18 15:27 UTC

This package is auto-updated.

Last update: 2024-09-18 18:54:37 UTC


README

将用户输入的索引范围标准化

用例 1(从索引范围开始)

  1. 从用户输入获取当前范围(例如,从 HTTP 标头中 - Range: items=40-49
  2. 定义切片(例如,运行带有 LIMIT 表达式的查询)

用法

use Sirprize\Paginate\Input\IndexInput;
use Sirprize\Paginate\Range\IndexRange;

$i = new IndexInput(4400, 4499); // $offset, $last
$i->setDefaultNumItems(25)->setMaxItems(100); // set defaults and limits
$r = new IndexRange($i);
$q = sprintf("SELECT * FROM my_table LIMIT %d, %d", $r->getOffset(), $r->getNumItems());

用例 2(从当前页开始)

  1. 从用户输入获取当前页和每页的项目数
  2. 定义切片(例如,运行带有 LIMIT 表达式的查询)

用法

use Sirprize\Paginate\Input\PageInput;
use Sirprize\Paginate\Range\PageRange;

$i = new PageInput(45, 100); // $currentPage, $numItemsPerPage
$i->setDefaultNumItems(25)->setMaxItems(100); // set defaults and limits
$r = new PageRange($i);
$q = sprintf("SELECT * FROM my_table LIMIT %d, %d", $r->getOffset(), $r->getNumItems());

分页器

  1. 执行操作以获取列表中的项目总数(例如,运行带有 COUNT 表达式的简单查询)
  2. 从用户输入获取当前页和每页的项目数
  3. 使用用户输入和项目数启动分页器
  4. 定义切片(例如,运行带有 LIMIT 表达式的复杂查询)

用法

use Sirprize\Paginate\Input\PageInput;
use Sirprize\Paginate\Range\PageRange;
use Sirprize\Paginate\Paginator;

$i = new PageInput(45, 100); // $currentPage, $numItemsPerPage
$i->setDefaultNumItems(25)->setMaxItems(100); // set defaults and limits
$r = new PageRange($i);
$r->setTotalItems(189678);
$p = new Paginator($r);
$p->setBaseUrl('/products')
$p->setPageParam('p');

以下信息可用

echo $p->isOutOfBounds(); // 0
echo $p->getTotalItems(); // 189678
echo $p->getNumItemsPerPage(); // 100
echo $p->getNumItemsOnCurrentPage(); // 100
echo $p->getFirstItemOnCurrentPage(); // 4401
echo $p->getLastItemOnCurrentPage(); // 4500
echo $p->getNumPages(); // 1897
echo $p->getCurrentPage(); // 45
echo $p->getPreviousPage(); // 44
echo $p->getNextPage(); // 46
echo $p->getFirstPage(); // 1
echo $p->getLastPage(); // 1897
echo $p->getOffset(); // 4400
echo $p->getLast(); // 4499
echo $p->getCurrentPageUrl(); // /products?p=45
echo $p->getNextPageUrl(); // /products?p=46
echo $p->getPreviousPageUrl(); // /products?p=44
echo $p->getFirstPageUrl(); // /products?p=1
echo $p->getLastPageUrl(); // /products?p=1897
echo $p->getBaseUrl(); // /products
echo $p->getPageParam(); // p

许可证

见 LICENSE。