PHP基于面向对象封装的分页类示例


Posted in PHP onMarch 15, 2019

本文实例讲述了PHP基于面向对象封装的分页类。分享给大家供大家参考,具体如下:

<?php
  class Page
  {
    protected $num;//每页显示条数
    protected $total;//总记录数
    protected $pageCount;//总页数
    protected $current;//当前页码
    protected $offset;//偏移量
    protected $limit;//分页页码
    /**
     * 构造方法
     * @param int $total 总记录数
     * @param int $num  每页显示条数
     */
    public function __construct($total,$num=5)
    {
      //1.每页显示条数
      $this->num = $num;
      //2.总记录数
      $this->total = $total;
      //3.总页数
      $this->pageCount = ceil($total/$num);
      //4.偏移量
      $this->offset = ($this->current-1)*$num;
      //5.分页页码
      $this->limit = "{$this->offset},{$this->num}";
      //6.初始化当前页
      $this->current();
    }
    /**
     * 初始化当前页
     */
    public function current(){
      $this->current = isset($_GET['page'])?$_GET['page']:'1';
      //判断当前页最大范围
      if ($this->current>$this->pageCount){
        $this->current = $this->pageCount;
      }
      //判断当前页最小范围
      if ($this->current<1){
        $this->current = 1;
      }
    }
    /**
     * 访问没权限访问的属性
     * @param string $key 想访问的属性
     * @return float|int|string 返回对应要改变的条件
     */
    public function __get($key){
      if ($key == "limit") {
        return $this->limit;
      }
      if ($key == "offset") {
        return $this->offset;
      }
      if ($key == "current") {
        return $this->current;
      }
    }
    /**
     * 处理分页按钮
     * @return string 拼接好的分页按钮
     */
    public function show(){
      //判断初始页码
      $_GET['page'] = isset($_GET['page'])?$_GET['page']:'1';
      //将$_GET值赋给上下变量
      $first = $end = $prev = $next = $_GET;
      // var_dump($prev);
      //上一页
      //判断上一页范围
      if ($this->current-1<1){
        $prev['page'] = 1;
      }else{
        $prev['page'] = $this->current-1;
      }
      //下一页
      //判断下一页范围
      if ($this->current+1>$this->pageCount) {
        $next["page"] = $this->pageCount;
      }else{
        $next['page'] = $this->current+1;
      }
      /*
      首页
      $first['page'] = 1; 
      //尾页
      $end['page'] = $this->pageCount;
      */
      //拼接路径
      $url = "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
      //拼接数组url地址栏后缀?传入参数
      //http://xxx/xxx/Page.class.php?page=值
      $prev = http_build_query($prev);
      $next = http_build_query($next);
      // $first = http_build_query($first);
      // $end = http_build_query($end);
      //拼接完整路径
      $prevpath = $url."?".$prev;
      $nextpath = $url."?".$next;
      // $firstpath = $url."?".$first;
      // $endpath = $url."?".$end;
      $str = "共有{$this->total}条记录 共有{$this->pageCount}页 ";
      $str .= "<a href='{$url}?page=1'>首页</a> ";
      $str .= "<a href='{$prevpath}'>上一页</a> ";
      $str .= "<a href='{$nextpath}'>下一页</a> ";
      $str .= "<a href='{$url}?page={$this->pageCount}'>尾页</a> ";
      return $str;
    }
  }
  //自行调试
  $a = new Page(10);
  echo $a->show();
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Ajax PHP简单入门教程代码
Apr 25 PHP
php xfocus防注入资料
Apr 27 PHP
php防注入及开发安全详细解析
Aug 09 PHP
浅析php原型模式
Nov 25 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP多文件上传实例
Jul 09 PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
php实现微信支付之退款功能
May 30 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
浅谈PHP无限极分类原理
Mar 14 #PHP
详解PHP队列的实现
Mar 14 #PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 #PHP
PHP的简单跳转提示的实现详解
Mar 14 #PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 #PHP
PHP模型Model类封装数据库操作示例
Mar 14 #PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 #PHP
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
Less 安装及基本用法
2018/05/05 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
通过实例了解python property属性
2019/11/01 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
春季运动会开幕词
2015/01/28 职场文书
停电放假通知
2015/04/14 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
一文弄懂MySQL索引创建原则
2022/02/28 MySQL