mps/pagination

PHP 弹性分页

v1.2 2015-08-11 12:42 UTC

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() 方法。可以使用它们来确定相应的对象应该实例化哪些类。

该仓库提供了一个实现 PaginationIteratorInterfacePaginationIterator 类,以及实现相应接口的 GapItemPageItem 类。

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>&nbsp;|&nbsp;';	
	}
}