登录  /  注册
博主信息
博文 98
粉丝 1
评论 0
访问量 78013
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
抽象类与接口实战
阿杰
原创
819人浏览过

实战准备

1.接口的应用场景:用抽象类来实现接口

  1. // 定义一个数据库的CURD接口
  2. interface iDBase
  3. {
  4. // 新增
  5. public static function insert($db,$data);
  6. // 查询
  7. public static function select($db,$options=[]);
  8. // 更新
  9. public static function update($db,$options=[]);
  10. // 删除
  11. public static function delete($db,$where);
  12. }
  13. // 实现类使用抽象类来充当
  14. // class Db implements iDBase
  15. abstract class aDb implements iDBase
  16. {
  17. // 使用单例模式连接:创建类的唯一实例,唯一对象
  18. protected static $db = null;
  19. // 抽象类充当接口实现类时,不用必须实现接口中的抽象方法
  20. // 当实现类中的方法中有一些公共操作时,可以将这些操作放在中间的抽象类中实现它
  21. // // 新增
  22. // public static function insert($db,$data){}
  23. // // 查询
  24. // public static function select($db,$options=[]){}
  25. // // 更新
  26. // public static function update($db,$options=[]){}
  27. // // 删除
  28. // public static function delete($db,$where){}
  29. public static function connect($dsn,$username,$password)
  30. {
  31. if(is_null(self::$db)){
  32. // 如果当前连接对象是null,表示未连接数据库
  33. self::$db = new PDO($dsn,$username,$password);
  34. }
  35. return self::$db;
  36. }
  37. }
  38. // 类的真正实现类
  39. class DB extends aDb
  40. {
  41. // 新增
  42. public static function insert($db,$data){
  43. }
  44. // 查询
  45. public static function select($db,$options=[]){
  46. return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);
  47. }
  48. // 更新
  49. public static function update($db,$options=[]){
  50. // return $db->query('INSERT `users` SET `name`=?, `email`= ?, `password`=?;')
  51. }
  52. // 删除
  53. public static function delete($db,$where){}
  54. }
  55. // 客户端代码
  56. // 连接参数
  57. $config = [
  58. // 类型
  59. 'type' => $type ?? 'mysql',
  60. // 默认数据库主机名(IP)
  61. 'host' => $host ?? 'localhost',
  62. // 默认数据库名
  63. 'dbname' => $type ?? 'tp5',
  64. // 默认字符编码集
  65. 'charset' => $type ?? 'utf8',
  66. // 默认端口号
  67. 'port' => $type ?? '3306',
  68. // 默认用户名
  69. 'username' => $username ?? 'root',
  70. // 默认用户的密码
  71. 'password' => $password ?? 'root'
  72. ];
  73. $dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);
  74. $username = $config['username'];
  75. $password = $config['password'];
  76. $db = DB::connect($dsn,$username,$password);
  77. // 调用实现类DB中的select()进行查询
  78. foreach(DB::select($db) as $user){
  79. print_r($user);
  80. }


2.新增数据(insert)

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


3.更新数据(update)

  1. // 类的真正实现类
  2. class DB extends aDb
  3. {
  4. // 新增
  5. public static function insert($db,$data){
  6. $sql = 'INSERT `tp_user` SET `username`=?,`password`=?,`age`=?;';
  7. $stmts = $db->prepare($sql);
  8. $stmts->execute($data);
  9. return '成功新增'.$stmts->rowCount().'条记录!';
  10. }
  11. // 查询
  12. public static function select($db,$options=[]){
  13. return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);
  14. }
  15. // 更新
  16. public static function update($db,$data){
  17. $sql = 'UPDATE `tp_user` SET `username`=?,`age`=? WHERE `id`=?;';
  18. $stmts = $db->prepare($sql);
  19. $stmts->execute($data);
  20. return '成功更新'.$stmts->rowCount().'条记录!';
  21. }
  22. // 删除
  23. public static function delete($db,$where){}
  24. }


4.删除数据(delete)

  1. // 类的真正实现类
  2. class DB extends aDb
  3. {
  4. // 新增
  5. public static function insert($db,$data){
  6. $sql = 'INSERT `tp_user` SET `username`=?,`password`=?,`age`=?;';
  7. $stmts = $db->prepare($sql);
  8. $stmts->execute($data);
  9. return '成功新增'.$stmts->rowCount().'条记录!';
  10. }
  11. // 查询
  12. public static function select($db,$options=[]){
  13. return $db->query('SELECT * FROM `tp_user` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);
  14. }
  15. // 更新
  16. public static function update($db,$data){
  17. $sql = 'UPDATE `tp_user` SET `username`=?,`age`=? WHERE `id`=?;';
  18. $stmts = $db->prepare($sql);
  19. $stmts->execute($data);
  20. return '成功更新'.$stmts->rowCount().'条记录!';
  21. }
  22. // 删除
  23. public static function delete($db,$where){
  24. $sql = 'DELETE FROM `tp_user` WHERE `id`=?;';
  25. $stmts = $db->prepare($sql);
  26. $stmts->execute($where);
  27. return '成功删除'.$stmts->rowCount().'条记录!';
  28. }
  29. }
  30. // 调用实现类DB中的delete()进行数据删除
  31. $data = [3];
  32. $res = DB::delete($db,$data);
  33. echo $res;


5.这里的接口好像没啥直接影响,删除也没关系

  1. interface iDBase
  2. {
  3. // 新增
  4. // public static function insert($db,$data);
  5. // 查询
  6. // public static function select($db,$options=[]);
  7. // 更新
  8. // public static function update($db,$data);
  9. // 删除
  10. // public static function delete($db,$where);
  11. }
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:完成的非常好
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学