mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-03 22:20:57 +08:00
122 lines
2.3 KiB
PHP
122 lines
2.3 KiB
PHP
<?php
|
|
|
|
class DB
|
|
{
|
|
private $driver;
|
|
|
|
private static $instance;
|
|
|
|
private static $queries = [];
|
|
|
|
private function __construct()
|
|
{
|
|
|
|
}
|
|
|
|
private function __clone()
|
|
{
|
|
|
|
}
|
|
|
|
public function setDriver(DBInterface $driver)
|
|
{
|
|
$this->driver = $driver;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public static function getInstance()
|
|
{
|
|
if (self::$instance) {
|
|
return self::$instance;
|
|
}
|
|
$instance = new self;
|
|
$driver = new DBMysqli();
|
|
$instance->setDriver($driver);
|
|
return self::$instance = $instance;
|
|
}
|
|
|
|
|
|
public function connect($host, $username, $password, $database, $port)
|
|
{
|
|
if (is_null($this->driver)) {
|
|
$this->driver->connect($host, $username, $password, $database, $port);
|
|
}
|
|
}
|
|
|
|
public function query(string $sql)
|
|
{
|
|
try {
|
|
return $this->driver->query($sql);
|
|
} catch (\Exception $e) {
|
|
do_log(sprintf("%s [%s] %s", $e->getMessage(), $sql, $e->getTraceAsString()));
|
|
throw new \DatabaseException($sql, $e->getMessage());
|
|
}
|
|
|
|
}
|
|
|
|
public function error()
|
|
{
|
|
return $this->driver->error();
|
|
}
|
|
|
|
public function errno()
|
|
{
|
|
return $this->driver->errno();
|
|
}
|
|
|
|
public function numRows($result)
|
|
{
|
|
return $this->driver->numRows($result);
|
|
}
|
|
|
|
public function select_db($database)
|
|
{
|
|
return $this->driver->selectDb($database);
|
|
}
|
|
|
|
public function fetchAssoc($result)
|
|
{
|
|
return $this->driver->fetchAssoc($result);
|
|
}
|
|
|
|
public function fetchRow($result)
|
|
{
|
|
return $this->driver->fetchRow($result);
|
|
}
|
|
|
|
public function fetchArray($result, $type = null)
|
|
{
|
|
return $this->driver->fetchArray($result, $type);
|
|
}
|
|
|
|
public function affectedRows()
|
|
{
|
|
return $this->driver->affectedRows();
|
|
}
|
|
|
|
public function escapeString(string $string)
|
|
{
|
|
return $this->driver->escapeString($string);
|
|
}
|
|
|
|
public function lastInsertId()
|
|
{
|
|
return $this->driver->lastInsertId();
|
|
}
|
|
|
|
public function freeResult($result)
|
|
{
|
|
return $this->driver->freeResult($result);
|
|
}
|
|
|
|
public function isConnected()
|
|
{
|
|
return !is_null($this->driver);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |