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 相关文章推荐
PHP 裁剪图片成固定大小代码方法
Sep 09 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP之认识(二)关于Traits的用法详解
Apr 11 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 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
用PHP实现文件上传二法
2006/10/09 PHP
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
php 读取文件乱码问题
2010/02/20 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
php实现等比例压缩图片
2018/07/26 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
javascript实现画板功能
2020/04/12 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Python开发编码规范
2006/09/08 Python
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python闭包思想与用法浅析
2018/12/27 Python
python3实现微型的web服务器
2019/09/03 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
Python datetime模块的使用示例
2021/02/02 Python
区三好学生主要事迹
2014/01/30 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
2015中秋祝酒词
2015/08/12 职场文书
思想品德课教学反思
2016/02/24 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android