一个简单、纯洁的PHP分页类
b我的博客,欢迎猛击:/b a href=http://levi.cg.am/http://levi.cg.am//a bbr / br / 他的特点:/b br / ol li单纯,接受参数,给出分页;/li li灵活:br / 可以自己决定,上、下一页的名称(比如我想叫pr
我的博客,欢迎猛击:
http://levi.cg.am/
他的特点:
备注说明:提供的示范代码中有两个静态方法大家可以不必理会。这个是自己项目开发用的。
他的特点:
- 单纯,接受参数,给出分页;
- 灵活:
可以自己决定,上、下一页的名称(比如我想叫prev、next诸如此类)
可以决定每页展示的分页数量,跨页数 - 提供一个包装方法,适应不同的网页结构,
比如有的网页我需要每个分页包含一个li(<li><a>1</a></li>...),依次类推
备注说明:提供的示范代码中有两个静态方法大家可以不必理会。这个是自己项目开发用的。
- Call::import,大家可以使用include代替
- URL::refresh,这是地址操作类,这里暂时不做说明,以后有机会再放上来,大家可以用这个页面的方法getUrl()
http://www.oschina.net/code/snippet_182375_6242
<?php /** * FILE_NAME : Pages.php FILE_PATH : /lv/view/ * 分页类 * * @copyright Copyright (c) 2006-2010 mailTo:levi@cgfeel.com * @author Levi * @package lv.view.Pages * @subpackage * @version 2011-10-03 */ Call::import('lv.url.URL'); class Pages { public $num = 1; public $size = 50; public $current = 1; private $_pages = array(); private $_title = array(); public function __construct($count, $size = 50) { $this->num = ceil($count / $size); $size > 0 && $this->size = (Int)$size; $page = isset($_GET['page']) ? (Int)trim($_GET['page']) : 1; $page > 1 && $this->current = (Int)$page; $this->_title = array('上一页', '1..', $this->num.'..', '下一页'); } /** * 包装分页 * @param String|Array $skirt * @param Array $entitle * @return String */ public function warp($skirt, $entitle = array()) { empty($this->_pages) && $this->get(); $entitle += $this->_title; $skirt = (Array)$skirt + array('', NULL); $data = implode($skirt[1].$skirt[0], $this->_pages); !is_null($skirt[1]) && $data = $skirt[0].$data.$skirt[1]; return vsprintf($data, $entitle); } /** * 获取分页 * @param Int $num 展示分页数 * @param Int $span 分页间隔 */ public function get($num = '5', $span = '2') { $this->_pages = array(); $start = $this->current - $num + $span; $start < 1 && $start = 1; $end = $start + $num; $end > $this->num && $end = (Int)$this->num; $this->current > 1 && $this->_pages[] = $this->_setPage($this->current - 1, '%1$s'); $start > 1 && $this->_pages[] = $this->_setPage(NULL, '%2$s'); for($i = $start; $i <= $end; $i++) $this->_pages[] = $this->_setPage($i, $i); $end < $this->num && $this->_pages[] = $this->_setPage($this->num, '%3$s'); $this->current < $this->num && $this->_pages[] = $this->_setPage($this->current + 1, '%4$s'); return (Array)$this->_pages; } private function _setPage($page, $name = '%s') { $hover = $page == $this->current ? ' class="pageHover"' : ''; return sprintf('<a href="%s"%s>%s</a>', URL::refresh(array('page' => $page)), $hover, $name); } } ?>
精彩图集
精彩文章