volnix / paginate
一个简单的分页库,易于扩展以实现自定义分页操作。
2.0.1
2017-06-19 16:35 UTC
Requires
- php: >= 5.4
- satooshi/php-coveralls: 0.7.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
README
Paginate 是一个极其简单的分页数据模型。它保存有关您的分页系统的元数据,以及任何给定时间的分页状态。它适用于服务器端分页模型、客户端分页构建视图以及两者之间的一切。
基本用法
如果需要,分页库可以无配置使用。Paginate 有 3 个配置设置,它们是关于您分页系统的元数据
- 每页结果数(默认:50)- 每页显示的结果数
- 页面范围(默认:2)- 显示在当前页面两侧的页面数(例如,如果您在第 5 页,则分页将显示第 3 页至第 7 页)
- 索引(默认:'page')- 当前页面标识符通过 GET/POST 索引传递;当开始构建分页时很有用
无配置分页
// instantiate our pager $pager = new \Volnix\Paginate\Pager; // actually set the pagination parameters $pager->paginate(1000, 5); // 100 results in result-set, current page = 5
注意:
paginate
方法实际上是设置当前分页状态的方法。必须使用结果计数(和可选的当前页)来构建有用的分页信息。
上述用例将设置以下关于当前分页状态参数(这些对应于 Pager 的类变量)
- 页数($max_page):20(1000 个结果,每页 50 个)
- 当前页:5
- 显示的页面范围($low_page - $high_page):3 - 7(2 页页面范围)
- 查询跳过($query_skip):400(在每页 100 个结果的第 5 页上,因此跳过前 400 个,因为我们位于 401-500)
配置分页
您还可以通过构造函数传递元数据或调用 setConfig
方法来设置您想要的分页样式
// both of the below examples do the exact same thing $pager = new \Volnix\Paginate\Pager(5, 5, 'foo'); $pager = new \Volnix\Paginate\Pager; $pager->setConfig(5, 5, 'foo');
注意: 上述两个示例都没有调用
paginate
方法。在调用paginate
方法之前,分页器没有任何价值,因为该方法实际上设置了您的当前状态。
分页信息
Pager 提供的核心信息由 Pager 提供的类变量组成,并且应该由任何扩展使用
paginate
- 是否分页的布尔值current_page
- 当前页(通过paginate
方法调用传递)query_skip
- ORM 查询下一个结果集时跳过的记录数result_count
- 需要分页通过的一组搜索条件匹配的总结果数min_page
- 分页的最小页码(始终为 1)max_page
- 分页的最大页码(等于结果数 / 每页结果数)low_page
- 要显示的页面范围的下限(由$page_range
确定)high_page
- 要显示的页面范围的上限
public $paginate = true; // whether to even paginate or not public $current_page = 1; // current page public $query_skip = 0; // the skip step to be passed into queries public $result_count = 0; // how many results we're paginating public $min_page = 1; // min page of all pages public $max_page = 1; // max page (i.e. results / results per page) public $low_page = 1; // low page in range of pages being displayed public $high_page = 1; // high page in range of pages being displayed
方法链
paginate
和 setConfig
方法都返回 Pager 对象,因此可以进行方法链
$pager = new \Volnix\Paginate\Pager; $pager->setConfig(5, 5, 'foo')->paginate(100); // OR $pager = (new \Volnix\Paginate\Pager)->setConfig(5, 5, 'foo')->paginate(100);
API 分页
Paginate 可以返回包含有关 API 分页的相关信息的数组或 JSON。这些字段以两种格式返回
current
:当前页prev
:上一页(如果处于分页的低端,则等于最小页码)next
:下一页(如果处于分页的高端,则等于最大页码)skip
:查询跳过的页数min
:最小页码max
:最大页码
注意: 如果没有分页,则
prev
和next
都将等于1
扩展分页
这个库旨在扩展。一旦您有了基本的分页信息,就可以在您的项目中使用任何ORM或JavaScript库来构建服务器端、客户端等的分页。