questlab/drivers/DatabaseDriver.inc

87 lines
1.9 KiB
PHP

<?php
/**
* NRE
*
* @author coderkun <olli@coderkun.de>
* @copyright 2013 coderkun (http://www.coderkun.de)
* @license http://www.gnu.org/licenses/gpl.html
* @link http://www.coderkun.de/projects/nre
*/
namespace nre\drivers;
/**
* Abstract class for implementing a database driver.
*
* @author coderkun <olli@coderkun.de>
*/
abstract class DatabaseDriver extends \nre\core\Driver
{
/**
* Driver class instance
*
* @static
* @var DatabaseDriver
*/
protected static $driver = null;
/**
* Connection resource
*
* @var resource
*/
protected $connection = null;
/**
* Singleton-pattern.
*
* @param array $config Database driver configuration
* @return DatabaseDriver Singleton-instance of database driver class
*/
public static function singleton($config)
{
// Singleton
if(self::$driver !== null) {
return self::$driver;
}
// Construct
$className = get_called_class();
self::$driver = new $className($config);
return self::$driver;
}
/**
* Construct a new database driver.
*
* @param array $config Connection and login settings
*/
protected function __construct($config)
{
parent::__construct();
// Establish connection
$this->connect($config);
}
/**
* Establish a connect to a MqSQL-database.
*
* @throws \nre\exceptions\DatamodelException
* @param array $config Connection and login settings
*/
protected abstract function connect($config);
}
?>