博主信息
博文 14
粉丝 0
评论 0
访问量 12076
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
数据库连接及事件委托
于星辉
原创
1129人浏览过
  1. <?php
  2. /**
  3. * 事件委托:数据库查询构造器
  4. */
  5. //被委托的类
  6. class Query
  7. {
  8. //创建类的唯一实例 :pdo对象
  9. private static $db;
  10. protected $table;
  11. protected $field;
  12. protected $limit;
  13. //private 私有的 阻止此类在外部进行实例化
  14. private function __construct()
  15. {
  16. }
  17. static function connect($dsn,$username,$pwd)
  18. {
  19. //创建pdo类的唯一实例 :pdo对象
  20. if (is_null(static::$db))
  21. {
  22. static::$db = new PDO($dsn,$username,$pwd);
  23. }
  24. //返回query实例
  25. return new static();
  26. }
  27. public function table($table)
  28. {
  29. $this->table = $table;
  30. return $this;
  31. }
  32. public function field($field)
  33. {
  34. $this->field = $field;
  35. return $this;
  36. }
  37. public function limit($limit)
  38. {
  39. $this->limit = $limit;
  40. return $this;
  41. }
  42. public function getSql()
  43. {
  44. return sprintf('SELECT %s FROM %s LIMIT %d',$this->field,$this->table,$this->limit);
  45. }
  46. public function select()
  47. {
  48. return static::$db->query($this->getSql())->fetchAll(PDO::FETCH_ASSOC);
  49. }
  50. }
  51. class Db
  52. {
  53. static function __callStatic($method,$args)
  54. {
  55. $dsn = 'mysql:localhost;dbname=yu';
  56. $username = 'root';
  57. $pwd ='123456yu';
  58. //获取到被委托的类query实例
  59. $query = Query::connect($dsn,$username,$pwd);
  60. return call_user_func([$query,$method],...$args);
  61. }
  62. }
  63. $res = Db::table('cate')->field('catname,catid')->limit(5)->select();
  64. echo '<pre>';
  65. print_r($res);
  66. ?>
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学