sirprize / paginate
将用户输入的索引范围标准化
2.0.0
2023-02-18 15:27 UTC
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
README
将用户输入的索引范围标准化
用例 1(从索引范围开始)
- 从用户输入获取当前范围(例如,从 HTTP 标头中 -
Range: items=40-49
) - 定义切片(例如,运行带有
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(从当前页开始)
- 从用户输入获取当前页和每页的项目数
- 定义切片(例如,运行带有
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());
分页器
- 执行操作以获取列表中的项目总数(例如,运行带有
COUNT
表达式的简单查询) - 从用户输入获取当前页和每页的项目数
- 使用用户输入和项目数启动分页器
- 定义切片(例如,运行带有
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。