头像

简单的PHP分页类

2018-04-17 13:35:24 来源:PHP代码   浏览()   评论 ( 0 )   

<?php
/**
 * FILE_NAME : Pages.php 
 * 分页类
 */
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('|');


标签: php
声明:转载请注明来源(PHP代码)并保留原文链接:http://www.phpdaima.com//master-100.html
广告不存在
评论0

后面还有条评论,点击查看>>

温馨提示:为规范评论内容,垃圾评论一律封号...