webb4you / multi-pager
此软件包最新版本(1.0.0)没有可用的许可证信息。
1.0.0
2014-06-28 22:36 UTC
Requires (Dev)
- phpunit/phpunit: 4.1.*
This package is not auto-updated.
Last update: 2024-09-24 03:40:49 UTC
README
MultiPager是一个简单的类,可以从多个或不同的来源分页结果。想象一下,你需要查询数据库以获取结果,同时从REST API获取结果,分页通过这些不同的结果集可能有点棘手。
如果你正在浏览第一页,你应该从哪个来源获取结果?如果你每页有10个结果,而第一个来源只有5个结果,那么你需要进行一些计算来确定第二个来源应该获取多少个结果以满足每页10个结果。
当只有一个或两个来源时,这很简单,当有更多来源时,它就变得有点更具挑战性。你不希望在没有需要的情况下从数据源请求数据。
确定每个页面的正确来源是MultiPager为你做的事情。
背景
这是为这样一个项目创建的,在这个项目中,我需要浏览来自多个网站和频道的多个数据源。我需要一个简单的方法来添加新的数据源,而不用担心重新计算分页。所以MultiPager就是这样诞生的。可能已经有类似的东西,但在经过广泛的谷歌搜索(5分钟)后,我决定写一个简单的数据源分页器。
安装
将以下内容添加到你的composer.json文件中
"require": {
"webb4you/multi-pager": "1.0.*"
}
用法
使用composer下载所需的依赖项。
导入MultiPager
use \W4Y\MultiPager\Pager; ... $pager = new Pager(); // The query parameter is not required, this is a shared variable we use in // our data sources to search for the required results. $options = ['query' => 'PHP Frameworks']; // Get your Data Source objects. $mysqlResults = new MysqlDataSource($options); $restApiResults = new RestApiDataSource($options); $luceneResults = new LuceneDataSource($options); // Set the data sources $pager->setDataSource($mysqlResults); $pager->setDataSource($restApiResults); $pager->setDataSource($luceneResults); // Set the max results per page $pager->setLimit(10); // Finally fetch the results for a given page. $page = 3; $results = $pager->fetch($page);
数据源
数据源是任何扩展\MultiPager\Source\DataSource的类。你必须实现fetch和count方法。
必须使用传递给fetch方法的偏移量和限制参数来获取结果。count必须简单地返回找到的总结果数。
示例
为了快速示例,安装MultiPager,然后浏览到示例目录,以了解如何实现和使用MultiPager与MockData源。