mps / pagination
PHP 弹性分页
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-28 18:15:59 UTC
README
此仓库提供了一些用于通用分页的 PHP 类。主要类是 PaginationIterator。它允许遍历一系列整数。根据前一个和后一个值,它将返回一个 PageItem-对象或一个 GapItem-对象。
可以使用实现 PaginationFactoryInterface 的几个类来为多种目的创建 PaginationIterators。
PaginationIteratorInterface
实现 PaginationIteratorInterface 的类允许遍历一个表示分页中页面的数字集合。它将其唯一构造函数参数作为数组。当遍历对象时,它将返回实现 PageItemInterface 的对象,对应于排序构造函数数组中的每个整数数字,或返回实现 GapItemInterface 的对象,对应于数字之间的每个间隔。
实现 PaginationIteratorInterface 的对象提供 setGapItemClass() 和 setPageItemClass() 方法。可以使用它们来确定相应的对象应该实例化哪些类。
该仓库提供了一个实现 PaginationIteratorInterface 的 PaginationIterator 类,以及实现相应接口的 GapItem 和 PageItem 类。
PaginationFactoryInterface
实现 PaginationFactoryInterface 的类有助于生成实现 PaginationIteratorInterface 的新对象。它们必须提供一个 makeNewPagination 方法。此方法接受四个参数
- int $max: 分页中的最后一页
- int $steps: 分页应显示/链接的页数。
- int $current: 当前显示的页码
- int $min: 分页中的第一页
该仓库提供了几个 PaginationFactoryInterface 的实现
- FullPaginationFactory: 此工厂生成的分页将列出分页中的每一页,并忽略 $steps 和 $current 参数
- LogPaginationFactory: 此工厂生成的分页将列出当前页、第一页、最后一页以及从 a^0 到 a^n(分别对应 a^m)距离 $step 页的页码,其中 a^n = $min(且 a^m = $max)。
- NeighbourPaginationFactory: 此工厂生成的分页将列出第一页、最后一页、当前页以及当前页的直接邻近页。
- StepPaginationFactory: 此工厂生成的分页将列出第一页、最后一页、当前页、上一页和下一页,以及从第一页到最后页之间等距离的页码。
示例
$pagination = LogPaginationFactory::makeNewPagination(100, 20, 35);
foreach ($pagination as $item) {
if ($item instanceof GapItemInterface) {
echo '...';
} elseif ($item instanceof PageItemInterface) {
echo '<a href="http://www.example.com/overview.php?page='.$item->getPageNumber().'">'.$item->getPageNumber().'</a> | ';
}
}