Config = $config; // Устанавливаю обработчик исключений $this->OnException = $onException; try { // Загружаю параметры подключения // - хост $host = $this->Config->Host; // - порт $port = $this->Config->Port; // - имя базы данных $dbname = $this->Config->Name; // - пользователь $user = $this->Config->UserName; // - пароль $password = $this->Config->Password; // Создаю dsn $dsn = match ($this->Config->Driver) { DBDriver::MySQL => "mysql:host=$host;port=$port;dbname=$dbname", DBDriver::MSSQL => "sqlsrv:Server=$host,$port;Database=$dbname;Encrypt=false;", DBDriver::PostgreSQL => "pgsql:host=$host;port=$port;dbname=$dbname;", DBDriver::OracleDB => "oci:dbname=$host:$port/$dbname", DBDriver::SQLite => "sqlite:$dbname" }; // Задаю DBSign // - Open $this->DBSignOpen = match ($this->Config->Driver) { DBDriver::MySQL, DBDriver::SQLite => '`', DBDriver::MSSQL => '[', DBDriver::PostgreSQL, DBDriver::OracleDB => '"' }; // - Close $this->DBSignClose = match ($this->Config->Driver) { DBDriver::MySQL, DBDriver::SQLite => '`', DBDriver::MSSQL => ']', DBDriver::PostgreSQL, DBDriver::OracleDB => '"' }; // Создаю объект для связи с базой данных $this->DataBaseHandle = new PDO($dsn, username: $user, password: $password); // Устанавливаю уровень ошибок $this->DataBaseHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { $this->HandleException($e); } } /** * Деструктор. Закрывает соединение с базой данных */ public function __destruct () { $this->DataBaseHandle = null; } // Транзакции use DatabaseTransactions; // Запросы Query и Execute use DatabaseQueryExecute; // Вставка данных use DatabaseInsert; // Получение данных use DatabaseGet; // Проверка существования и получение количества строк use DatabaseCountExist; // Обновление записей use DatabaseUpdate; // Удаление записей use DatabaseDelete; // Приватные методы use DatabaseSpecial; }