questlab/models/DatabaseModel.inc
coderkun 046a724272 merge
2015-04-27 16:42:05 +02:00

83 lines
2 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\models;
/**
* Default implementation of a database model.
*
* @author coderkun <olli@coderkun.de>
*/
class DatabaseModel extends \nre\core\Model
{
/**
* Database connection
*
* @static
* @var \nre\drivers\DatabaseDriver
*/
protected $db = NULL;
/**
* Construct a new datamase model.
*
* @throws \nre\exceptions\DatamodelException
* @throws \nre\exceptions\DriverNotFoundException
* @throws \nre\exceptions\DriverNotValidException
* @param string $type Database type
* @param array $config Connection settings
*/
function __construct($type, $config)
{
parent::__construct();
// Load database driver
$this->loadDriver($type);
// Establish database connection
$this->connect($type, $config);
}
/**
* Load the database driver.
*
* @throws \nre\exceptions\DriverNotFoundException
* @throws \nre\exceptions\DriverNotValidException
* @param string $driverName Name of the database driver
*/
private function loadDriver($driverName)
{
\nre\core\Driver::load($driverName);
}
/**
* Establish a connection to the database.
*
* @throws \nre\exceptions\DatamodelException
* @param string $driverName Name of the database driver
* @param array $config Connection settings
*/
private function connect($driverName, $config)
{
$this->db = \nre\core\Driver::factory($driverName, $config);
}
}
?>