Blogger Information
Blog 30
fans 1
comment 0
visits 23876
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
异常处理类和文件上传
阿乎乎的学习
Original
732 people have browsed it

第一个知识点 异常处理类Exception,用于处理PHP中的各种异常,也可以重写这个类来进行异常信息样式输出。

第二个知识点 php文件上传处理

第三个知识点 php模型类与数据表的绑定。

作业:写一个自定义异常类来处理上传过程以及各种错误

实例

错误代码:'.$this->code.','.$this->message.''; } } try{ //设置数组用来保存可上传文件类型后缀 $allowUp=['jpg','jpeg','png','gif']; $fileName=$_FILES['file']['name']; //将上传的文件名用explode()函数处理成以点为分割的数组 $tempList=explode('.',$fileName); //为防止文件名中有多个点,使用end()函数取出数组中最后一个元素做为文件的类型处理 $type=end($tempList); //设置上传文件的大小 $fileSize=204800; //如果文件名为空,返回错误信息 if(empty($_FILES['file']['name'])){ throw new userException('没有选择文件',111); } //如果文件类型不在可上传文件数组中,返回错误信息 if(!in_array($type,$allowUp)){ throw new userException('不允许上传'.$type.'文件,只能上传图片类型',101); } //如果上传文件的大小超出,返回错误信息 if($_FILES['file']['size']>$fileSize){ throw new userException('文件大小超出限制,只能上传200KB内的图片',102); } //文件上传的错误代码,使用switch来循环,错误代码是查看的手册 if($_FILES['file']['error']>0){ switch ($_FILES['file']['error']){ case 1: throw new userException('文件大小超出限制',103); break; case 2: throw new userException('文件大小超出限制,只能上传200KB内的图片',102); break; case 3: throw new userException('只有部分文件被上传',104); break; case 4: throw new userException('没有文件被上传',105); break; case 6: throw new userException('找不到临时文件夹',106); break; case 7: throw new userException('文件写入失败',107); break; default: throw new userException('未知错误',108); } } //创建一个文件夹命名为时间格式,方便整理 $path='upload/'.date('Ymd'); //判断文件夹是否存在,不存在创建文件夹 if(!is_dir($path)){ $path=mkdir($path,777,true); } //重命名文件,取时间格式加md5加密1到99随机数,防止文件重名。 $fileUploadName=date('YmdHis',time()).md5(mt_rand(1,99)).'.'. $type; //根据是否存在临时文件来判断文件是否上传成功 if(is_uploaded_file($_FILES['file']['tmp_name'])) { //移动文件到创建的时间格式文件夹内,并重新命名 if(move_uploaded_file($_FILES['file']['tmp_name'],$path.'/'.$fileUploadName)) { echo ''; }else{ throw new userException('文件上传失败,可能是目录权限有问题',109); } }else{ throw new userException('非法操作',110); } }catch (userException $e){ echo $e->error(); }

运行实例 »

点击 "运行实例" 按钮查看在线实例

结果演示

111.png

作业:写一个与指定数据表绑定的类, 实现基本的模型功能,例如查询, 新增, 更新,删除等操作。

根据之前的数据库链式操作查询电影输出,没有足够的时间,先写一个查询交作业,再来试试其他的操作。主要是我不知道该怎么

实例

pdo=$pdo; } public function table($tableName){ $this->table=$tableName; return $this; } public function field($field='*'){ $this->field=empty($field) ? $field : $field; return $this; } public function where($where=''){ $this->where=empty($where) ? $where:' WHERE '.$where; return $this; } public function limit($limit=''){ $this->limit=empty($limit) ? $limit :' LIMIT '.$limit; return $this; } public function select(){ $sql='SELECT ' . $this->field .' FROM ' .$this->table .$this->where .$this->limit; $stmt=$this->pdo->prepare($sql); $stmt->execute(); $stmt->setFetchMode(\PDO::FETCH_CLASS,movies::class); return $stmt->fetchAll(); } } //数据库连接类 class Db{ protected static $pdo=null; public static function connect(){ self::$pdo=new \PDO('mysql:host=127.0.0.1;dbname=www.tao.io','root','root'); } public static function __callStatic($name, $arguments) { self::connect(); $query=new Select(self::$pdo); return call_user_func_array([$query,$name],$arguments); } } //用来绑定数据库的类 class movies{ private $mov_id; private $name; private $image; private $detail; private $cate_id; public function __get($name){ return $this->$name; } public function __construct() { $this->image='./static/images/'.$this->image; } public function __set($name,$value){ $this->$name=$value; } } $staffs = Db::table('movies')->field()->where()->limit( )->select(); foreach ($staffs as $v){ echo "

{$v->mov_id}、{$v->name}

"; echo "

".$v->detail."

"; }

运行实例 »

点击 "运行实例" 按钮查看在线实例

333.png

Correction status:qualified

Teacher's comments:文件的上传是比较麻烦了, 相反 下载却很容易实现, 想一想原理是什么? 很简单, 只要是浏览器不能直接解析的文档, 都会提示用户是否下载, 是不是so eaay?
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply withNews Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!