博客列表 >使用抽象类与接口对数据进行增删改查

使用抽象类与接口对数据进行增删改查

longlong
longlong原创
2020年07月23日 16:38:18827浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议