Db.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace GatewayWorker\Lib;
  3. /**
  4. * 数据库类
  5. * @author walkor <walkor@workerman.net>
  6. */
  7. class Db
  8. {
  9. /**
  10. * 实例数组
  11. * @var array
  12. */
  13. protected static $instance = array();
  14. /**
  15. * 获取实例
  16. * @param string $config_name
  17. * @throws \Exception
  18. */
  19. public static function instance($config_name)
  20. {
  21. if(!isset(\Config\Db::$$config_name))
  22. {
  23. echo "\\Config\\Db::$config_name not set\n";
  24. throw new \Exception("\\Config\\Db::$config_name not set\n");
  25. }
  26. if(empty(self::$instance[$config_name]))
  27. {
  28. $config = \Config\Db::$$config_name;
  29. self::$instance[$config_name] = new \GatewayWorker\Lib\DbConnection($config['host'], $config['port'], $config['user'], $config['password'], $config['dbname']);
  30. }
  31. return self::$instance[$config_name];
  32. }
  33. /**
  34. * 关闭数据库实例
  35. * @param string $config_name
  36. */
  37. public static function close($config_name)
  38. {
  39. if(isset(self::$instance[$config_name]))
  40. {
  41. self::$instance[$config_name]->closeConnection();
  42. self::$instance[$config_name] = null;
  43. }
  44. }
  45. /**
  46. * 关闭所有数据库实例
  47. */
  48. public static function closeAll()
  49. {
  50. foreach(self::$instance as $connection)
  51. {
  52. $connection->closeConnection();
  53. }
  54. self::$instance = array();
  55. }
  56. }