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

<?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];
}
}