侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP常用的类封装小结【4个工具类】

php  /  管理员 发布于 7年前   170

本文实例讲述了PHP常用的类封装。分享给大家供大家参考,具体如下:

这4个类分别是Mysql类、 分页类、缩略图类、上传类。

Mysql类

query($sql);  }  /**   * 获取多行数据   * @param str $sql 查询语句   * @return arr   多行数据   */  public static function getAll($sql){    $data = array();    $res = self::query($sql);    while($row = $res->fetch_assoc()){      $data[] = $row;    }    return $data;  }  /**   * 获取一行数据   * @param str $row 查询语句   * @return arr   单行数据   */  public static function getRow($row){    $res = self::query($sql);    return $res->fetch_assoc();  }  /**   * 获取单个结果   * @param str $sql 查询语句   * @return str   单个结果   */  public static function getOne($sql){    $res = self::query($sql);    $data = $res->fetch_row();    return $data[0];  }  /**   * 插入/更新数据   * @param str $table 表名   * @param arr $data 插入/更新的数据   * @param str $act  insert/update   * @param str $where 更新条件   * @return bool 插入/更新是否成功   */  public static function exec($table,$data,$act='insert',$where='0'){    //插入操作    if($act == 'insert'){      $sql = 'insert into '.$table;      $sql .= ' ('.implode(',',array_keys($data)).')';      $sql .= " values ('".implode("','",array_values($data))."')";    }else if($act == 'update'){      $sql = 'update '.$table.' set ';      foreach ($data as $k => $v) {        $sql .= $k.'='."'$v',";      }      $sql = rtrim($sql,',');      $sql .= ' where 1 and '.$where;    }    return self::query($sql);  }  /**   * 获取最近一次插入的主键值   * @return int 主键   */  public static function getLastId(){    return self::conn()->insert_id;  }  /**   * 获取最近一次操作影响的行数   * @return int 影响的行数   */  public static function getAffectedRows(){    return self::conn()->affected_rows;  }  /**   * 关闭数据库连接   * @return bool 是否关闭   */  public static function close(){    return self::conn()->close();  }}?>

分页类

num = $num;    $this->cnt = $cnt;    $this->curr = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]);    $this->curr = $this->curr > 0 ? $this->curr : 1;    $this->firstRow  = $this->cnt * ($this->curr - 1);    $this->getPage();  }  /**   * 分页方法   */  private function getPage(){    $page = ceil($this->num / $this->cnt);//总的页数    $left = max(1,$this->curr - floor($this->pageCnt/2));//计算最左边页码    $right = min($left + $this->pageCnt - 1 ,$page);//计算最右边页码    $left = max(1,$right - ($this->pageCnt - 1));//当前页码往右靠,需要重新计算左边页面的值    for($i=$left;$i<=$right;$i++){      if($i == 1){        $index = '第1页';      }else if($i == $page){        $index = '最后一页';      }else{        $index = '第'.$i.'页';      }      $_GET['page'] = $i;      $this->pageIndex[$index] = http_build_query($_GET);    }  }  /**   * 返回分页信息数据   * @return [type] [description]   */  public function show(){    return $this->pageIndex;  }}?>

缩略图类

sourcePath = $sourcePath;    //获取缩略图的大小    $this->thumbWidth = $thumbWidth;    $this->thumbHeight = $thumbHeight;    $this->thumbPath = $this->getThumbPath();    //计算大图的大小    list($this->sourceWidth,$this->sourceHeight,$this->sourceType) = getimagesize($this->sourcePath);  }  /**   * 确定缩略图保存的路径   * @return [type] [description]   */  private function getThumbPath(){    $ext = $this->getExt();    $filename = basename($this->sourcePath,'.'.$ext).'_thumb'.'.'.$ext;    return $thumbPath = __DIR__.'/'.$filename;  }  /**   * 获取原图的扩展名   * @return str 扩展名   */  private function getExt(){    return pathinfo($this->sourcePath,PATHINFO_EXTENSION);  }  /**   * 检测原图的扩展名是否合法,并返回相应类型   * @return bool/str 原图的类型   */  public function getType(){    $typeArr = array(      1 => 'gif',      2 => 'jpeg',      3 => 'png',      15 => 'wbmp'    );    if(!in_array($this->sourceType, array_keys($typeArr))){      return false;    }    return $typeArr[$this->sourceType];  }  /**   * 按照缩略图大小,计算大图的缩放比例   * @return float 缩放比例   */  public function calculateRate(){    return min($this->thumbWidth / $this->sourceWidth,$this->thumbHeight / $this->sourceHeight);  }  /**   * 计算大图按照缩放比例后,最终的图像大小   * @param float $rate 缩放比例   * @return arr 缩放后的图片大小   */  public function getImageSizeByRate($rate){    $width = $this->sourceWidth * $rate;    $height = $this->sourceHeight * $rate;    return array('w'=>$width,'h'=>$height);  }  /**   * 保存成文件   * @return [type] [description]   */  public function saveFile($image){    $method = "image".$this->getType();    $method($image,$this->thumbPath);  }  /**   * 进行绘画操作   * @return [type] [description]   */  public function draw(){    if(!($type = $this->getType())){      echo "文件类型不支持";      return ;    }    //创建大图和小图的画布    $method = "imagecreatefrom".$type;    $bigCanvas = $method($this->sourcePath);    $smallCanvas = imagecreatetruecolor($this->thumbWidth, $this->thumbHeight);    //创建白色画笔,并给小图画布填充背景    $white = imagecolorallocate($smallCanvas, 255, 255, 255);    imagefill($smallCanvas, 0, 0, $white);    //计算大图的缩放比例    $rate = $this->calculateRate();    //计算大图缩放后的大小信息    $info = $this->getImageSizeByRate($rate);    //进行缩放    imagecopyresampled($smallCanvas, $bigCanvas,      ($this->thumbWidth - $info['w']) / 2 , ($this->thumbHeight - $info['h']) / 2,      0, 0, $info['w'], $info['h'], $this->sourceWidth, $this->sourceHeight);    //保存成文件    $this->saveFile($smallCanvas);    //销毁画布    imagedestroy($bigCanvas);    imagedestroy($smallCanvas);  }}?>

上传类

getExt($filename);    return in_array($ext,$this->allowExt);  }  /**   * 检测文件大小是否超过限制   * @param int size 文件大小   * @return bool 文件大小是否超过限制   */  public function checkSize($size){    return $size < $this->maxSize * 1024 * 1024;  }  /**   * 随机的文件名   * @param int $len 随机文件名的长度   * @return str 随机字符串   */  public function randName($len=6){    return substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,$len);  }  /**   * 创建文件上传到的路径   * @return str 文件上传的路径   */  public function createDir(){    $dir = './upload/'.date('Y/m/d',time());    if(is_dir($dir) || mkdir($dir,0777,true)){      return $dir;    }  }  /**   * 文件上传   * @param str $flag 文件上传标识   * @return arr 文件上传信息   */  public function uploadFile($flag){    if($_FILES[$flag]['name'] === '' || $_FILES[$flag]['error'] !== 0){      echo "没有上传文件";      return;    }    $info = $this->getInfo($flag);    if(!$this->checkExt($info['name'])){      echo "不支持的文件类型";      return;    }    if(!$this->checkSize($info['size'])){      echo "文件大小超过限制";      return;    }    $filename = $this->randName().'.'.$this->getExt($info['name']);    $dir = $this->createDir();    if(!move_uploaded_file($info['tmp_name'], $dir.'/'.$filename)){      echo "文件上传失败";    }else{      return array('filename'=>$filename,'dir'=>$dir);    }  }}?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP网络编程技巧总结》及《php常见数据库操作技巧汇总》

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

您可能感兴趣的文章:

  • PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
  • 常用PHP封装分页工具类
  • php封装的验证码工具类完整实例
  • PHP封装的验证码工具类定义与用法示例
  • php封装的pdo数据库操作工具类与用法示例
  • PHP抓取、分析国内视频网站的视频信息工具类
  • PHP常用工具类大全附全部代码下载
  • PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
  • PHP实现可添加水印与生成缩略图的图片处理工具类
  • php实现网页缓存的工具类分享


  • 上一条:
    PHP session垃圾回收机制实例分析
    下一条:
    php实现网页上一页下一页翻页过程详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客