批改状态:合格
老师批语:完成的非常好
1.接口的应用场景:用抽象类来实现接口
// 定义一个数据库的CURD接口interface iDBase{// 新增public static function insert($db,$data);// 查询public static function select($db,$options=[]);// 更新public static function update($db,$options=[]);// 删除public static function delete($db,$where);}// 实现类使用抽象类来充当// class Db implements iDBaseabstract class aDb implements iDBase{// 使用单例模式连接:创建类的唯一实例,唯一对象protected static $db = null;// 抽象类充当接口实现类时,不用必须实现接口中的抽象方法// 当实现类中的方法中有一些公共操作时,可以将这些操作放在中间的抽象类中实现它// // 新增// public static function insert($db,$data){}// // 查询// public static function select($db,$options=[]){}// // 更新// public static function update($db,$options=[]){}// // 删除// public static function delete($db,$where){}public static function connect($dsn,$username,$password){if(is_null(self::$db)){// 如果当前连接对象是null,表示未连接数据库self::$db = new PDO($dsn,$username,$password);}return self::$db;}}// 类的真正实现类class DB extends aDb{// 新增public static function insert($db,$data){}// 查询public static function select($db,$options=[]){return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);}// 更新public static function update($db,$options=[]){// return $db->query('INSERT `users` SET `name`=?, `email`= ?, `password`=?;')}// 删除public static function delete($db,$where){}}// 客户端代码// 连接参数$config = [// 类型'type' => $type ?? 'mysql',// 默认数据库主机名(IP)'host' => $host ?? 'localhost',// 默认数据库名'dbname' => $type ?? 'tp5',// 默认字符编码集'charset' => $type ?? 'utf8',// 默认端口号'port' => $type ?? '3306',// 默认用户名'username' => $username ?? 'root',// 默认用户的密码'password' => $password ?? 'root'];$dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);$username = $config['username'];$password = $config['password'];$db = DB::connect($dsn,$username,$password);// 调用实现类DB中的select()进行查询foreach(DB::select($db) as $user){print_r($user);}


2.新增数据(insert)
// 类的真正实现类class DB extends aDb{// 新增public static function insert($db,$data){$sql = 'INSERT `tp_user` SET `username`=?,`password`=?,`age`=?;';$stmts = $db->prepare($sql);$stmts->execute($data);return '成功新增'.$stmts->rowCount().'条记录!';}// 查询public static function select($db,$options=[]){return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);}// 更新public static function update($db,$options=[]){// return $db->query('INSERT `users` SET `name`=?, `email`= ?, `password`=?;')}// 删除public static function delete($db,$where){}}// 调用实现类DB中的insert()进行插入数据$data = ['小花','xiaohua',18];$res = DB::insert($db,$data);echo $res;


3.更新数据(update)
// 类的真正实现类class DB extends aDb{// 新增public static function insert($db,$data){$sql = 'INSERT `tp_user` SET `username`=?,`password`=?,`age`=?;';$stmts = $db->prepare($sql);$stmts->execute($data);return '成功新增'.$stmts->rowCount().'条记录!';}// 查询public static function select($db,$options=[]){return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);}// 更新public static function update($db,$data){$sql = 'UPDATE `tp_user` SET `username`=?,`age`=? WHERE `id`=?;';$stmts = $db->prepare($sql);$stmts->execute($data);return '成功更新'.$stmts->rowCount().'条记录!';}// 删除public static function delete($db,$where){}}


4.删除数据(delete)
// 类的真正实现类class DB extends aDb{// 新增public static function insert($db,$data){$sql = 'INSERT `tp_user` SET `username`=?,`password`=?,`age`=?;';$stmts = $db->prepare($sql);$stmts->execute($data);return '成功新增'.$stmts->rowCount().'条记录!';}// 查询public static function select($db,$options=[]){return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);}// 更新public static function update($db,$data){$sql = 'UPDATE `tp_user` SET `username`=?,`age`=? WHERE `id`=?;';$stmts = $db->prepare($sql);$stmts->execute($data);return '成功更新'.$stmts->rowCount().'条记录!';}// 删除public static function delete($db,$where){$sql = 'DELETE FROM `tp_user` WHERE `id`=?;';$stmts = $db->prepare($sql);$stmts->execute($where);return '成功删除'.$stmts->rowCount().'条记录!';}}// 调用实现类DB中的delete()进行数据删除$data = [3];$res = DB::delete($db,$data);echo $res;


5.这里的接口好像没啥直接影响,删除也没关系
interface iDBase{// 新增// public static function insert($db,$data);// 查询// public static function select($db,$options=[]);// 更新// public static function update($db,$data);// 删除// public static function delete($db,$where);}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号