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.
65 lines
1.6 KiB
65 lines
1.6 KiB
<?php
|
|
/**
|
|
* @copyright NetMonsters <team@netmonsters.ru>
|
|
* @link http://netmonsters.ru
|
|
* @package Majestic
|
|
* @subpackage db
|
|
* @since 2010-02-16
|
|
* @version SVN: $Id$
|
|
* @filesource $URL$
|
|
*/
|
|
|
|
class Db
|
|
{
|
|
|
|
const FETCH_ASSOC = 2;
|
|
const FETCH_NUM = 3;
|
|
const FETCH_BOTH = 4;
|
|
const FETCH_OBJ = 5;
|
|
|
|
/**
|
|
* Databases connections
|
|
*
|
|
* @var array
|
|
*/
|
|
static protected $connections = array();
|
|
|
|
/**
|
|
* Connect to database
|
|
*
|
|
* @param string $name Database name. If not set 'default' will be used.
|
|
* @param array $config Configuration array.
|
|
*
|
|
* @return DbDriver
|
|
*/
|
|
static public function connect($name = null, $config = null)
|
|
{
|
|
if ($name === null) {
|
|
$name = 'default';
|
|
}
|
|
|
|
if (! isset(self::$connections[$name])) {
|
|
if (!$config) {
|
|
$config = Config::get('databases')->$name;
|
|
}
|
|
|
|
if (! is_array($config)) {
|
|
throw new Exception('Connection parameters must be an array');
|
|
}
|
|
|
|
$driver = 'MySQLiDriver';
|
|
if (isset($config['driver'])) {
|
|
$driver = $config['driver'];
|
|
unset($config['driver']);
|
|
}
|
|
|
|
$connection = new $driver($config);
|
|
|
|
if (! $connection instanceof DbDriver) {
|
|
throw new Exception('Database driver must extends DbDriver');
|
|
}
|
|
self::$connections[$name] = $connection;
|
|
}
|
|
return self::$connections[$name];
|
|
}
|
|
}
|