分享一个php的分页类

/*
*@ max最大页数
*@ url链接url
*@ step页码间隔,最小3,最大9
*@ config: pre上一页,next下一页,pages页码,select跳转
*/
class Page{ 
    private $pageUrl;
    private $query;
    private $max;
    private $step;
    private $config=array('pre','next','pages');
    
    public function __construct($url = "", $max = 100,$step = 3){
        $urlArr=parse_url($url);
        $pageUrl='';
        $query=array();
        isset($urlArr['scheme']) && $pageUrl.=$urlArr['scheme'].'://';
        isset($urlArr['host']) && $pageUrl.=$urlArr['host'];
        isset($urlArr['path']) && $pageUrl.=$urlArr['path'];
        isset($urlArr["query"]) && parse_str($urlArr["query"],$query);
        $this->pageUrl=$pageUrl;
        $this->query=$query;
        $this->max=$max;
        $this->step=$step;
    }
    
    public function setConfig($cfg=array()){
        $this->config=$cfg;
        return $this;
    }
    
    public function html($nowPage=1){
        $html='';
        if(in_array('pre',$this->config)){
            $this->query['page']=$nowPage-1;
            $querystr=http_build_query($this->query);
            $html.=$nowPage == 1 ? '<a href="javascript:;" class="pre disabled">上一页</a>' : '<a href="'.$this->pageUrl.'?'.$querystr.'" class="pre">上一页</a>';
        }
        $preDiff=$this->step - ($this->max - $nowPage);
        $preDiff=$preDiff > 0 ? $preDiff : 0;
        $nextDiff=$this->step - ($nowPage - 1);
        $nextDiff=$nextDiff > 0 ? $nextDiff : 0;
        for($i=($this->step + $preDiff);$i>0;$i--){
            $page=$nowPage - $i;
            $this->query['page']=$page;
            $querystr=http_build_query($this->query);
            if($page > 0){
                $html.='<a href="'.$this->pageUrl.'?'.$querystr.'" class="item">'.$page.'</a>';
            }
        }
        $html.='<a href="javascript:;" class="item active">'.$nowPage.'</a>';
        for($i=1;$i<=($this->step + $nextDiff);$i++){
            $page=$nowPage + $i;
            $this->query['page']=$page;
            $querystr=http_build_query($this->query);
            $page <= $this->max && $html.='<a href="'.$this->pageUrl.'?'.$querystr.'" class="item">'.$page.'</a>';
        }
        if(in_array('next',$this->config)){
            $this->query['page']=$nowPage+1;
            $querystr=http_build_query($this->query);
            $html.=$nowPage >= $this->max ?'<a href="javascript:;" class="next disabled">下一页</a>' : '<a href="'.$this->pageUrl.'?'.$querystr.'" class="next">下一页</a>';
        }
        return $html;
    }
}

咳咳,刚开始规划的功能,由于懒了点,写的时候没有写完,朋友可以补补哈,目前功能是够用。。。。
pages页码配置无效,直接默认就有了,,
select跳转预留了,还没写。。。。

 

原文链接:http://www.webstr.top/post/68.html

posted @ 2019-11-03 17:40  wx_9uxYUbHk2m  阅读(1)  评论(0编辑  收藏  举报  来源