tjweldon/pages

轻量级独立分页组件

dev-master 2020-07-20 14:28 UTC

This package is auto-updated.

Last update: 2024-09-21 00:05:00 UTC


README

Pages是一个轻量级分页组件。它是对任何值集合的分页包装。

安装

Composer

composer require tjweldon/pages

用法

创建您的Pages

创建您的分页集合

$pages = Pages::empty()
	->appendCollection($iterableCollectionOfItems)
	->appendItem($aSingleItem)
;

$pages变量现在包含您的项目集合,但默认情况下不会分页。要设置分页

$pages->limitPageSize($pageSize);

或者

$pages->limitPageCount($pageCount);

警告:按顺序或相反顺序连续使用,将忽略第一个,因为一个值设置另一个值,这取决于项目数量。

从您的Pages读取

Pages类是Page对象的集合。Pages实现了\Iterator接口,可以像数组一样迭代,即。

$pages = Pages::empty()->appendCollection($iterableCollectionOfItems);

foreach ($pages as $pageNumber => $page) {
	// do something
}

可以访问单个页面

$page = $pages->getPage($pageNumber)

在这两种情况下,$page变量存储一个Page实例。要访问页面上的项目

$items = $page->getItems();

Page类也实现了\Iterator接口,因此也可以迭代

foreach ($page as $index => $item) {
	// do something
}

项目索引

项目按数字索引,有两种方案可用。默认情况下,页面和Page中的项目索引从0开始,页面号通过$page->getPageNumber()访问。您可以在任何时候将页面中的项目索引设置为相对于整个项目集合,如下所示

$fifthPage = Pages::empty()
	->appendCollection($oneHundredItems)
	->limitPageSize(10)
	->getPage(4)
;

$fifthPage->getPageNumber() // Returns int(4)

$items = $fifthPage
	->indexRelativeToPagination(true)
	->getItems() // returns the items on the page with sequential indexes from 40 to 49
; 	

或者

foreach ($items->indexRelativeToPagination(true) as $index => $item) {
	echo $index . ", "; // will echo the numbers 40 to 49
}