1. 简介

封装了一个分页类,方便以后取用。

只是一个简单的封装,可以在这个基础上进行改造,优化代码啊,增加配置啊什么的。

效果大概是这样:

往下点会变成:

2. 代码

/**
 * 自定义分页类
 * @param $totalNum int 总数量
 * @param $current int 当前页面
 * @param $limit int 一页多少个
 * @param $baseUrl string url
 * @param $pageParams array 额外参数
 * @return string
 */
public function getPagination($totalNum, $current, $limit, $baseUrl, $pageParams)
{
    $totalPage = intval(ceil($totalNum / $limit));//总页数

    $params = '';
    if (!empty($pageParams)){
        foreach ($pageParams as $k => $v){
            $params .= '&'.$k.'='.$v;
        }
    }

    $output =   '<ul class="pagination">';
    if ($totalPage < 10){
        for ($i=1; $i<=$totalPage; $i++){
            if ($current == $i){
                $output .= '<li class="active"><a href="'. $baseUrl .'?page='. $i.$params .'">'. $i .'</a></li>';
            }else{
                $output .= '<li><a href="'. $baseUrl .'?page='. $i.$params .'">'. $i .'</a></li>';
            }
        }
    } else {
        $next = $current+1;
        $last = $current-1;
        $nextnext = $current+2;
        $lastlast = $current-2;
        if ($current == 1){
            for ($i=1; $i<=3; $i++){
                if ($current == $i){
                    $output .= '<li class="active"><a href="'. $baseUrl .'?page='. $i.$params .'">'. $i .'</a></li>';
                }else{
                    $output .= '<li><a href="'. $baseUrl .'?page='. $i.$params .'">'. $i .'</a></li>';
                }
            }
            $output .= '<li class="disabled"><a href="#">...</a></li>';
            $output .= '<li><a href="'. $baseUrl .'?page='. $totalPage.$params .'">'. $totalPage .'</a></li>';
            $output .= '<li><a href="'. $baseUrl .'?page='. $next.$params .'">»</a></li>';
        } else {
            if ($lastlast >= 1){
                if ($lastlast == 1){
                    $output .= '<li><a href="'. $baseUrl .'?page=1'.$params.'">1</a></li>';
                }else{
                    $output .= '<li><a href="'. $baseUrl .'?page='. $next.$params .'">«</a></li>';
                    $output .= '<li><a href="'. $baseUrl .'?page=1'.$params.'">1</a></li>';
                    $output .= '<li class="disabled"><a href="#">...</a></li>';
                    $output .= '<li><a href="'. $baseUrl .'?page='. $lastlast.$params .'">'. $lastlast .'</a></li>';
                }
            }
            if ($last >= 1) {
                $output .= '<li><a href="'. $baseUrl .'?page='. $last.$params .'">'. $last .'</a></li>';
            }

            $output .= '<li class="active"><a href="'. $baseUrl .'?page='. $current.$params .'">'. $current .'</a></li>';

            if ($next <= $totalPage){
                $output .= '<li><a href="'. $baseUrl .'?page='. $next.$params .'">'. $next .'</a></li>';
            }

            if ($nextnext <= $totalPage){
                if ($nextnext == $totalPage){
                    $output .= '<li><a href="'. $baseUrl .'?page='. $totalPage.$params .'">'. $totalPage .'</a></li>';
                }else{
                    $output .= '<li><a href="'. $baseUrl .'?page='. $nextnext.$params .'">'. $nextnext .'</a></li>';
                    $output .= '<li class="disabled"><a href="#">...</a></li>';
                    $output .= '<li><a href="'. $baseUrl .'?page='. $totalPage.$params .'">'. $totalPage .'</a></li>';
                    $output .= '<li><a href="'. $baseUrl .'?page='. $next.$params .'">»</a></li>';
                }
            }
        }
    }
    $output .=  '</ul>';

    return $output;
}