PHP:分页类

调用方法:

$a = new Paging(29, 5);
var_dump($a->allMessage());

代码:

<?php
/**
 * Created by PhpStorm.
 * User: ming
 * Date: 2018/7/16
 * Time: 上午11:07
 */
class Paging
{
    //总数据量
    protected $totalCount;
    //每页数据
    protected $number;
    //总页数
    protected $totalPage;
    //当前页
    protected $page;
    //url
    protected $url;

    /**
     * Paging constructor.
     * @param $totalCount:数据总数
     * @param $number:每页显示数
     */
    public function __construct($totalCount, $number)
    {
        $this->totalCount = $totalCount;
        $this->number = $number;
        $this->totalPage = $this->getTotalPage();
        $this->page = $this->getPage();
        $this->url = $this->getUrl();
    }

    protected function getTotalPage()
    {
        $totalPage = ceil($this->totalCount / $this->number);
        return $totalPage;
    }
    protected function getPage()
    {
        if (empty($_GET['page'])) {
            $page = 1;
        } elseif ($_GET['page'] > $this->totalPage) {
            $page = $this->totalPage;
        } elseif ($_GET['page'] < 1) {
            $page = 1;
        } else {
            $page = $_GET['page'];
        }
        return $page;
    }
    protected function getUrl()
    {
        //协议
        $scheme = $_SERVER['REQUEST_SCHEME'];
        //主机
        $host = $_SERVER['SERVER_NAME'];
        //端口
        $port = $_SERVER['SERVER_PORT'];
        //地址
        $uri = $_SERVER['REQUEST_URI'];
        //url
        $flawUrl = $scheme.'://'.$host.':'.$port;

        //去除uri[query]中的page
        $uriArray = parse_url($uri);
        $path = $uriArray['path'];
        $query = $uriArray['query'];
        parse_str($query, $array);
        if (empty($array['page'])) {
            $url = $flawUrl.$path;
        } else {
            unset($array['page']);
            $query = http_build_query($array);
            if (empty($query)) {
                $url = $flawUrl.$path;
            } else {
                $url = $flawUrl.$path.'?'.$query;
            }
        }
        return $url;
    }

    public function first()
    {
        $str = 'page=1';
        return $this->setUrl($str);
    }
    public function prev()
    {
        $page = $this->page - 1;
        if ($page < 1) {
            $str = 'page=1';
        } else {
            $str = 'page='.$page;
        }
        return $this->setUrl($str);
    }
    public function next()
    {
        $page = $this->page + 1;
        if ($page > $this->totalPage) {
            $str = 'page='.$this->totalPage;
        } else {
            $str = 'page='.$page;
        }
        return $this->setUrl($str);
    }
    public function end()
    {
        $str = 'page='.$this->totalPage;
        return $this->setUrl($str);
    }
    public function allMessage()
    {
        return [
            'first'=>$this->first(),
            'prev'=>$this->prev(),
            'next'=>$this->next(),
            'end'=>$this->end()
        ];
    }

    protected function setUrl($str)
    {
        if (strstr($this->url, '?')) {
            return $this->url.'&'.$str;
        } else {
            return $this->url.'?'.$str;
        }
    }

    public function limit()
    {
        $offset = ($this->page - 1) * $this->number;
        return $offset.','.$this->number;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值