1: <?php
2:
3: namespace ZDB ;
4:
5: /**
6: * Синглетон инкапсулирующий конект к БД
7: */
8: class DB
9: {
10: private static $db = null;
11: private static $driver = null;
12: private static $dbhost;
13: private static $dbname;
14: private static $dbuser;
15: private static $dbpassword;
16: private $conn = null;
17:
18: private function __construct() {
19:
20: }
21:
22: /**
23: * Установка параметров коннекта
24: *
25: * @param mixed $dbhost
26: * @param mixed $dbname
27: * @param mixed $dbuser
28: * @param mixed $dbpassword
29: * @param string $driver
30: */
31: public static function config($dbhost, $dbname, $dbuser, $dbpassword, $driver = "mysqli") {
32: global $ADODB_FETCH_MODE, $ADODB_QUOTE_FIELDNAMES;
33: $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
34: $ADODB_QUOTE_FIELDNAMES = true;
35:
36: self::$dbhost = $dbhost;
37: self::$dbname = $dbname;
38: self::$dbuser = $dbuser;
39: self::$dbpassword = $dbpassword;
40: self::$driver = $driver;
41: }
42:
43: /**
44: * Открывает конект к БД и возвращает соотаветствующий ресурс
45: *
46: */
47: public static function getConnect() {
48: $db = DB::getDB();
49: $db->open();
50:
51: return $db->conn;
52: }
53:
54: /**
55: * Возвращает инстанс
56: *
57: */
58: public static function getDB() {
59: if (self::$db == null) {
60: self::$db = new DB();
61: }
62: return self::$db;
63: }
64:
65: private function open() {
66: if ($this->conn instanceof \ADOConnection) {
67: return;
68: }
69: $this->conn = \ADONewConnection(self::$driver);
70: $this->conn->Connect(self::$dbhost, self::$dbuser, self::$dbpassword, self::$dbname);
71: if(DB::$driver == "mysqli") {
72: $this->conn->Execute("SET NAMES 'utf8'");
73: $this->conn->Execute("SET SQL_BIG_SELECTS=1");
74: }
75:
76: }
77:
78: /**
79: * Закрывает конект к БД
80: *
81: */
82: public static function Close() {
83: $db = DB::getDB();
84: if ($db->conn instanceof \ADOConnection) {
85: $db->conn->Close();
86: }
87: }
88:
89: }
90: