批改状态:合格
老师批语:使用异常来代替传统的错误处理, 是目前最常用的方式,一定要明白原理,并尽可能使用它

<?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.写一个与指定数据表绑定的类, 实现基本的模型功能,例如查询, 新增, 更新,删除等操作
查询

增加和修改不会写
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号