博主信息
博文 60
粉丝 5
评论 3
访问量 81506
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
使用抽象类与接口对数据进行增删改查
longlong
原创
1052人浏览过

1. 抽象类与接口的组合应用

用抽象类来实现接口,对数据表进行增删改查的操作,示例如下:

  1. <?php
  2. // 1. 接口:定义接口中的方法(增删改查,基于pdo对象)
  3. interface iDbBase
  4. {
  5. // 增
  6. public static function insert ($pdo,$data);
  7. // 删
  8. public static function delete ($pdo,$where);
  9. // 改
  10. public static function update ($pdo,$options);
  11. // 查
  12. public static function select ($pdo,$options=[]);
  13. }
  14. // 2. 抽象类实现接口:放一些公共的操作(连接数据库,拿到pdo对象)
  15. abstract class aDb implements iDbBase
  16. {
  17. protected static $pdo = null;
  18. public static function connect ($dsn,$username,$password) {
  19. if (is_null(self::$pdo)) {
  20. self::$pdo = new PDO($dsn,$username,$password);
  21. }
  22. return self::$pdo;
  23. }
  24. }
  25. // 3. 继承抽象类(真正实现类/子类),将接口中的方法全部实现
  26. class Db extends aDb
  27. {
  28. // 插入
  29. public static function insert ($pdo,$data) {
  30. $stmt = $pdo->prepare(" INSERT `student` SET `username`='钱八',`password`='123456',`sex`='男',`age`='50',`tel`='12335647541' ");
  31. $stmt->execute();
  32. return "受影响的记录有".$stmt->rowCount()."条";
  33. }
  34. // 删除
  35. public static function delete ($pdo,$where) {
  36. $stmt = $pdo->prepare(' DELETE FROM `student` WHERE `id`=1010 ');
  37. $stmt->execute();
  38. return "被删除的记录有".$stmt->rowCount()."条";
  39. }
  40. // 更新
  41. public static function update ($pdo,$options) {
  42. $stmt = $pdo->prepare(' UPDATE `student` SET `username`=? WHERE `id`=? ');
  43. $stmt->execute(['老大','4']);
  44. return "更新的记录有".$stmt->rowCount()."条";
  45. }
  46. // 查询
  47. public static function select ($pdo,$options=[]) {
  48. return $pdo->query(' SELECT * FROM `student` ')->fetchAll(PDO::FETCH_ASSOC);
  49. }
  50. }
  51. $config =[
  52. 'type' => $type ?? 'mysql',
  53. 'host' => $host ?? 'php.edu',
  54. 'username' => $username ?? 'root',
  55. 'password' => $password ?? 'root',
  56. 'dbname' => $dbname ?? 'first',
  57. 'port' => $port ?? '3306',
  58. 'charset' => $charset ?? 'utf8',
  59. ];
  60. extract($config);
  61. $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s;port=%s',$type,$host,$dbname,$charset,$port);
  62. $pdo = Db::connect($dsn,$username,$password);
  63. // 调用 查询
  64. $res = Db::select($pdo);
  65. foreach ($res as $user) {
  66. printf('| %d | %s | %s | %s | %s | %s |<br>',$user['id'],$user['username'],$user['password'],$user['sex'],$user['age'],$user['tel']);
  67. }
  68. // 调用 插入
  69. echo Db::insert($pdo,$data);
  70. // 调用 删除
  71. echo Db::delete($pdo,$where);
  72. // 调用 更新
  73. echo Db::update($pdo,$options);
  • 数据表原型:

  • 调用查询操作:

  • 调用插入操作:

  • 调用删除操作:

  • 调用更新操作:

2.总结

其他一些知识点都自己记录在xmind的笔记里了

批改老师:天蓬老师天蓬老师

批改状态:合格

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

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

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