一個簡單、純潔的PHP分頁類
他的特點:單純,接受參數,給出分頁;靈活:可以自己決定,上、下一頁的名稱(比如我想叫prev、nex t諸如此類)可以決定每頁展示的分頁數量,跨頁數提供一個包裝方法,適應不同的網頁結構,比如有的網頁我需要每個分頁包含一個li(<li><a>1</a></li
...),依次類推備注說明:提供的示范代碼中有兩個靜態方法大家可以不必理會。這個是自己項目開發用的。Call::import,大家可以使用include代 替URL::refresh,這是地址操作類,這里暫時不做說明,以后有機會再放上來,大家可以用這個頁面的方法getUrl()http://www.oschin a.net/code/snippet_182375_6242
[PHP]代碼
<?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);
}
}
?>
使用示范
$pages = new Pages(100, 20);
$pages->warp('|');
本文由用戶 ebey2291 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!