数据库请求委托代理

作业标题:0816 oop编程-4
作业内容:请用请求委托原理封装查询构造器(只封装查询操作即可)


  • 请求委托原理封装查询构造器
  1. class Query{
  2. private static $db;
  3. protected $table;
  4. protected $field;
  5. protected $limit;
  6. private function __construct()
  7. {
  8. }
  9. static function connect($dsn,$username,$pwd)
  10. {
  11. //创建PDO类的唯一实例 pdo对象
  12. if(is_null(static::$db))
  13. {
  14. static::$db = new PDO($dsn,$username,$pwd);
  15. }
  16. // 返回query实例
  17. return new static();
  18. }
  19. public function table($table)
  20. {
  21. $this->table = $table;
  22. return $this;
  23. }
  24. public function field($field)
  25. {
  26. $this->field = $field;
  27. return $this;
  28. }
  29. public function limit($limit)
  30. {
  31. $this->limit = $limit;
  32. return $this;
  33. }
  34. public function getSql()
  35. {
  36. return sprintf('SELECT %s FROM %s LIMIT %d ',$this->field,$this->table,$this->limit);
  37. }
  38. public function select()
  39. {
  40. return static::$db->query($this->getSql())->fetchAll(PDO::FETCH_ASSOC);
  41. }
  42. }
  43. class Db{
  44. static function __callStatic($method,$args)
  45. {
  46. $dsn = 'mysql:host=localhost;dbname=my_test';
  47. $username = 'root';
  48. $pwd = 'root';
  49. // 获取到被委托的类query实例
  50. $query = Query::connect($dsn,$username,$pwd);
  51. return call_user_func([$query,$method],...$args);
  52. }
  53. }$res = Db::table('emp')->field('ename,empno')->limit(5)->select();
  54. echo '<pre>';
  55. print_r($res);

数据库链式操作

更多相关文章

  1. php快递查询接口,一次接入顺丰、京东、申通、圆通、韵达、中通、
  2. PHP全国快递寄件接口,1天接入四通一达,极兔,宅急送,德邦,京东,天
  3. 【前端 · 面试 】HTTP 总结(九)—— HTTP 协商缓存
  4. 【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述
  5. 【前端 · 面试 】HTTP 总结(六)—— HTTP 版本区别
  6. 【前端 · 面试 】HTTP 总结(五)—— GET 和 POST
  7. 【前端 · 面试 】HTTP 总结(四)—— HTTP 状态码
  8. 【前端 · 面试 】HTTP 总结(三)—— HTTP 请求方法
  9. json 基础啊,xml异步请求,post和get区别

随机推荐

  1. 如何用Python快速优雅的批量修改Word文档
  2. 爬虫遇到头疼的验证码?Python实战讲解弹窗
  3. 提高内存使用效能的技巧
  4. 爬取B站20万+条弹幕,我学会了如何成为B站
  5. 原理+代码|手把手教你使用Python实战反欺
  6. 用Python打造一款文件搜索工具,所有功能自
  7. 老板让我从几百个Excel中查找数据,我用Pyt
  8. 可视化工具不知道怎么选?深度评测5大Pytho
  9. 原理+代码|Python实战多元线性回归模型
  10. 原理+代码|Python基于主成分分析的客户信