Correction status:qualified
Teacher's comments:使用异常来代替传统的错误处理, 是目前最常用的方式,一定要明白原理,并尽可能使用它
<?php namespace _1022; //Exception 类是可以进行扩展的 //Exception 中只有__construct()和__toString()允许扩展,其它都是最终方法final,不允许扩展 //下面我们来创建一个自己的异常类,专用于处理算数运算中可能出现的错误 //基本要求是:错误代码加粗,提示文本描红,并要求换行显示 //处理运行中的错误 // 异常进行错误的统一处理 // 异常类是php中专用于错误 信息的统一处理 use Exception; //将系统的异常类进行扩展,自定义 class Customize extends Exception { public function __construct($message = ""/**错误信息*/, $code = 0/**代码*/ ) { parent::__construct($message,$code); } public function errorInfo() { // heredoc:用来输出大段的html代码或字符,并且中间允许有变量且会解析 return <<< "ERROE" <h2> <img src="uploads/caveat.jpg" alt="" width="1.2%"> <span style="color:red;"><strong>{$this->getCode()}: </strong></span> <span style="color:red;">{$this->getMessage()}</span> <img src="uploads/error.png" alt="" width="1.2%" > </h2> ERROE; } } try { //设置允许上传文件的类型 $fileType = ['jpg','JPG','jpeg','png','gif']; //设置允许上传文件的最大长度 $fileSize = 3145728; //上传到服务器上的制定的目录 $filePath = '/uploads/'; //原始的文件名 $fileName = $_FILES['my_file']['name']; //上传到服务器上的临时文件名 $tempFile = $_FILES['my_file']['tmp_name']; // 2.判断文件是否上传成功? // $_FILES['my_file']['error'],0:表示成功,大于1出错 $uploadError = $_FILES['my_file']['error']; if ($uploadError > 0) { switch ($uploadError) { case 1: case 2:throw new Customize('上传文档不允许超过5MB', 1001); case 3:throw new Customize('上传文件不完整',1002); case 4:throw new Customize('没有文件被上传',1003); default:throw new Customize('未知错误',1004); } } //3. 判断文件是否上传正确? $extension = explode/**将文件切割成两部分*/('.', $fileName)[1]; if (!in_array($extension/**扩展名*/, $fileType/**数组*/)) { throw new Customize('不允许上传'.$extension.'文件类型',1005); } //4.为了防止同名覆盖,将上传的文件重命名:md5+时间戳 $fileName = date('YmdHis',time()).md5(mt_rand(1,99)).'.'.$extension; //5.上传文件 if (is_uploaded_file($tempFile)) { if (move_uploaded_file($tempFile,__DIR__. $filePath.$fileName)) { echo '<script> alert("上传成功");location.href = document.referrer;//返回并刷新 </script>'; } else { throw new Customize('文件无法移动到制定目录,请检查目录权限',1006); } } else { throw new Customize('非法操作',1007); } exit(); } catch (Customize $th) { echo $th->errorInfo(); echo '<br>'; }
点击 "运行实例" 按钮查看在线实例
2.写一个与指定数据表绑定的类, 实现基本的模型功能,例如查询, 新增, 更新,删除等操作
查询
增加和修改不会写