php封装api(PHP常用的类封装小结4个工具类)
类别:编程学习 浏览量:2184
时间:2022-01-24 00:19:17 php封装api
PHP常用的类封装小结4个工具类本文实例讲述了PHP常用的类封装。分享给大家供大家参考,具体如下:
这4个类分别是Mysql类、 分页类、缩略图类、上传类。
Mysql类
|
<?php /** * Mysql类 */ class Mysql{ private static $link = null; //数据库连接 /** * 私有的构造方法 */ private function __construct(){} /** * 连接数据库 * @return obj 资源对象 */ private static function conn(){ if (self:: $link === null){ $cfg = require './config.php' ; self:: $link = new Mysqli( $cfg [ 'host' ], $cfg [ 'user' ], $cfg [ 'pwd' ], $cfg [ 'db' ]); self::query( "set names " . $cfg [ 'charset' ]); //设置字符集 } return self:: $link ; } /** * 执行一条sql语句 * @param str $sql 查询语句 * @return obj 结果集对象 */ public static function query( $sql ){ return self::conn()->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(); } } ?> |
分页类
|
<?php /** * 分页类 * @author webbc */ class Page{ private $num ; //总的文章数 private $cnt ; //每页显示的文章数 private $curr ; //当前的页码数 private $p = 'page' ; //分页参数名 private $pageCnt = 5; //分栏总共显示的页数 private $firstRow ; //每页的第一行数据 private $pageIndex = array (); //分页信息 /** * 构造函数 * @param int $num 总的文章数 * @param int $cnt 每页显示的文章数 */ public function __construct( $num , $cnt =10){ $this ->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; } } ?> |
缩略图类
|
<?php /** * 缩略图类 * @author webbc */ class Thumb{ private $thumbWidth ; //缩略图的宽 private $thumbHeight ; //缩略图的高 private $thumbPath ; //缩略图保存的路径 private $sourcePath ; //原图的路径 private $sourceWidth ; //原图的宽度 private $sourceHeight ; //原图的高度 private $sourceType ; //原图的图片类型 /** * 构造函数 * @param str $sourcePath 原图的绝对路径 * @param integer $thumbWidth 缩略图的宽 * @param integer $thumbHeight 缩略图的高 */ public function __construct( $sourcePath , $thumbWidth =200, $thumbHeight =200){ //获取原图的绝对路径 $this ->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 ); } } ?> |
上传类
|
<meta charset= "utf8" /> <?php /** * 文件上传类 * @author webbc */ class Upload{ private $allowExt = array ( 'gif' , 'jpg' , 'jpeg' , 'bmp' , 'png' , 'swf' ); //限制文件上传的后缀名 private $maxSize = 1; //限制最大文件上传1M /** * 获取文件的信息 * @param str $flag 上传文件的标识 * @return arr 上传文件的信息数组 */ public function getInfo( $flag ){ return $_FILES [ $flag ]; } /** * 获取文件的扩展名 * @param str $filename 文件名 * @return str 文件扩展名 */ public function getExt( $filename ){ return pathinfo ( $filename ,PATHINFO_EXTENSION); } /** * 检测文件扩展名是否合法 * @param str $filename 文件名 * @return bool 文件扩展名是否合法 */ private function checkExt( $filename ){ $ext = $this ->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程序设计有所帮助。
原文链接:https://blog.csdn.net/baochao95/article/details/52055353
您可能感兴趣
- php面向对象如何开发(PHP创建对象的六种方式实例总结)
- thinkphp5如何实现消息队列(thinkPHP5.1框架使用SemanticUI实现分页功能示例)
- php面向对象编程代码(php面向对象程序设计入门教程)
- php中三种变量的作用区域(PHP global全局变量经典应用与注意事项分析附$GLOBALS用法对比)
- js和php加密(RSA实现JS前端加密与PHP后端解密功能示例)
- php错误处理及调试(php报错502 bad gateway解决方法)
- phplaravel怎么优化(laravel执行php artisan migrate报错的解决方法)
- 如何用thinkphp框架来写一个网站(php tpl模板引擎定义与使用示例)
- php中怎么分割数组(PHP实现数组根据某个字段进行水平合并,横向合并案例分析)
- php使用yield处理并发(Yii框架中使用PHPExcel的方法分析)
- phpmysql网站开发入门与提高(PHP+MySQL+sphinx+scws实现全文检索功能详解)
- 宝塔面板与php(宝塔面板如何安装PHP扩展)
- php加密平台(PHP7实现和CryptoJS的AES加密方式互通示例AES-128-ECB加密)
- php解压压缩包(PHP 实现文件压缩解压操作的方法)
- python与php(解决Python3 被PHP程序调用执行返回乱码的问题)
- php闰年计算公式(php判断/计算闰年的方法小结三种方法)
- 三人行,她们是育人路上的 铁三角 团队(她们是育人路上的)
- 阴阳师 孟婆山兔CP不倒 新皮肤草稿 孟婆兔 让痒痒鼠点赞(阴阳师孟婆山兔CP不倒)
- 阴阳师孟婆御魂推荐 孟婆御魂搭配毕业套(阴阳师孟婆御魂推荐)
- 袁冰妍终于接到新剧,饰演反追男主,看到合作演员 眼光果然毒辣(袁冰妍终于接到新剧)
- 记忆中的台词(记忆中的台词)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
热门推荐
- mysql触发器怎么添加(MySQL触发器的使用场景及方法实例)
- php秒杀实现代码(php无限极分类实现方法分析)
- wampserver如何使用(WampServer打开xdebug功能方法教程)
- nginx安全配置提示(wdcp Linux面板nginx启用gzip后js未压缩解决方案)
- css文字图片垂直居中对齐(CSS设置文字图片垂直居中的方法总结)
- sqlserver2016安装教程(SQL server 2016 安装步骤图文教程)
- phpsession登录功能(php实现session共享的实例方法)
- react 使用实例(React+高德地图实时获取经纬度,定位地址)
- python代码词频分析(python实现词法分析器)
- vue路由有几种实现模式(Vue实现路由过渡动效的4种方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9