You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
1.8 KiB
84 lines
1.8 KiB
<?php
|
|
/**
|
|
* @copyright NetMonsters <team@netmonsters.ru>
|
|
* @link http://netmonsters.ru
|
|
* @package Majestic
|
|
* @subpackage db
|
|
* @since 2010-02-16
|
|
*/
|
|
|
|
abstract class DbDriver
|
|
{
|
|
|
|
/**
|
|
* Database connection
|
|
*
|
|
* @var object
|
|
*/
|
|
protected $connection = null;
|
|
|
|
/**
|
|
* Configuration data
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $config = array();
|
|
|
|
|
|
public function __construct($config)
|
|
{
|
|
$this->checkConfig($config);
|
|
$this->config = $config;
|
|
}
|
|
|
|
protected function checkConfig($config)
|
|
{
|
|
$required = array('database', 'username', 'password', 'hostname');
|
|
foreach ($required as $option) {
|
|
if (!isset($config[$option])) {
|
|
throw new GeneralException('Configuration must have a "' . $option . '".');
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getConnection()
|
|
{
|
|
$this->connect();
|
|
return $this->connection;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $request
|
|
* @param mixed $params
|
|
* @return DbStatement
|
|
*/
|
|
public function query($request, $params = array())
|
|
{
|
|
$this->connect();
|
|
if (!is_array($params)) {
|
|
$params = array($params);
|
|
}
|
|
$stmt = $this->prepare($request);
|
|
$stmt->execute($params);
|
|
return $stmt;
|
|
}
|
|
|
|
|
|
/* Abstract methods */
|
|
|
|
abstract public function insert($table, $data);
|
|
|
|
abstract public function update($table, $data, $condition);
|
|
|
|
abstract public function delete($table, $condition);
|
|
|
|
abstract public function prepare($request);
|
|
|
|
abstract public function getInsertId($table = null, $key = null);
|
|
|
|
abstract public function isConnected();
|
|
|
|
abstract public function disconnect();
|
|
|
|
abstract protected function connect();
|
|
}
|