PHP封装的分页类MVC

这是简单的分页的封装函数

<?php 
class Page 
{
    // 每一页显示的个数
    protected $number;
    // 一共多少数据
    protected $totalCount;
    // 一共多少页
    protected $totalPage;
    // 当前页
    protected $page;
    // URL
    protected $url;
// 初始化成员属性
function __construct ($number = 5, $totalCount = 61)
{
    $this->number = $number;
    $this->totalCount = $totalCount;
    // 得到总页数
    $this->totalPage = $this->getTotalPage();
    // 获得当前页
    $this->page = $this->getPage();
    / / 得到url 
    $this->url = $this->getUrl;
    echo $this->url;
}
// 总页数的方法
protected function getTotalPage()
{
    return ceil($this->totalCount / $this->number);
}
protected function getPage() {
    if (empty($_GET['page'])) {
        $page = 1;
    } else {
        $page = $_GET['page'];
    }
    return $page;
}
protected function getUrl () {
    // 得到协议  http
    $scheme = $_SERVER['REQUEST_SCHEME'];
    // 得到主机
    $host = $_SERVER['SERVER_NAME'];
    // 获取端口号
    $port = $_SERVER['SERVER_PORT'];
    // 获取文件路径和参数
    $pathData = $_SERVER['REQUEST_URI'];
// 拼接page
$data = parse_url($pathData);
// 回去文件路径
$path  = $data['path'];
// 判断有没有query,如果有的话,将后面的page参数干掉
if (!empty ($data['query'])) {
    // 将query中的page干掉
    parse_str($data['query'],$arr);
    unset($arr['page']);
    // 拼接其他的
    $query = http_build_query($arr);
    // 将其他的拼接到path路径的后面
    $path = $path .'?' . $query;
}
    $path = trim($path,'?');
    // 开始拼接一个完整的路径URL
    $url = $scheme . '://' . $host . ':' . $port . $path;
    return $url;
}
    // 首页
    function first () {
    return $this->setUrl('page = 1');
    }
    // 上一页
    function prev () {
    if ($this->page - 1 < 1) {
        $page  =1;
    } else {
        $page = $_GET['page'];
}
    return $page;
}
protected function getUrl() {
    $scheme = $_SERVER['REQUEST+SCHEME'];
    $host = $_SERVER['SERVER_NAME'];
    $port = $_SERVER['SERVER_PORT'];
    $pathData = $_SERVER['REQUEST_URI'];

    $data = parse_url($pathData);
    $path = $data['path'];
    if(!emety($data[''query])){
        parse_str($data['query'], $arr);
        unset($arr['page']);
        $query = http_build_query($arr);
        $path = $path . '?' . $query;
    }
    $path = trim($path,'?');
    $url = $scheme . '://' . $host . ':' . $port.$path;
    return $url;
}
protected function setUrl() {
    if(strstr($this->url,'?')){
        return $this->url.'&'.$str;
    } else {
        return $this->url.'?'.$str;
    }
}
    // 下一页
    function next() {
    if ($this->page + 1 > $this->totalPage) {
    $page = $this->totalPage;
}else {
    $page = $this->page + 1;
} 
return $this->setUrl('page=' . $page);
}
// 尾页
function end () {
    return $this->setUrl('page=' . $this->totalPage);
}
protected function setUrl($str){
    if (strstr($this->url, '?')){
    return $this->url . '&' . $str;
    } else {
    return  $this->url . '?' . $str;
}
}
function allPage()
{
    return [
    'first' => $this->first();
    'prev'=>$this->prev();
    'next'=>$this->next();
    'end'=>$this->end();
];
}
}
$page = new Page();
var_dump($page->allPage());

以上就是简单的分页类,做了部分的注释,希望对你们有用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值