refactoring database and connector classes.
This commit is contained in:
parent
77d65b89cb
commit
4b063ac042
|
@ -7,10 +7,13 @@ class DB {
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
private static $connections = array();
|
public static $connections = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a database connection. Database connections are managed as singletons.
|
* Get a database connection. If no database name is specified, the default
|
||||||
|
* connection will be returned as defined in the db configuration file.
|
||||||
|
*
|
||||||
|
* Note: Database connections are managed as singletons.
|
||||||
*
|
*
|
||||||
* @param string $connection
|
* @param string $connection
|
||||||
* @return PDO
|
* @return PDO
|
||||||
|
@ -22,19 +25,9 @@ public static function connection($connection = null)
|
||||||
$connection = Config::get('db.default');
|
$connection = Config::get('db.default');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! array_key_exists($connection, static::$connections))
|
return array_key_exists($connection, static::$connections)
|
||||||
{
|
? static::$connections[$connection]
|
||||||
$config = Config::get('db.connections');
|
: static::$connections[$connection] = DB\Connector::connect($connection);
|
||||||
|
|
||||||
if ( ! array_key_exists($connection, $config))
|
|
||||||
{
|
|
||||||
throw new \Exception("Database connection [$connection] is not defined.");
|
|
||||||
}
|
|
||||||
|
|
||||||
static::$connections[$connection] = DB\Connector::connect((object) $config[$connection]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return static::$connections[$connection];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?php namespace System\DB;
|
<?php namespace System\DB;
|
||||||
|
|
||||||
|
use System\Config;
|
||||||
|
|
||||||
class Connector {
|
class Connector {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,11 +19,13 @@ class Connector {
|
||||||
/**
|
/**
|
||||||
* Establish a PDO database connection.
|
* Establish a PDO database connection.
|
||||||
*
|
*
|
||||||
* @param object $config
|
* @param string $connection
|
||||||
* @return PDO
|
* @return PDO
|
||||||
*/
|
*/
|
||||||
public static function connect($config)
|
public static function connect($connection)
|
||||||
{
|
{
|
||||||
|
$config = static::configuration($connection);
|
||||||
|
|
||||||
if ($config->driver == 'sqlite')
|
if ($config->driver == 'sqlite')
|
||||||
{
|
{
|
||||||
return static::connect_to_sqlite($config);
|
return static::connect_to_sqlite($config);
|
||||||
|
@ -37,14 +41,14 @@ public static function connect($config)
|
||||||
/**
|
/**
|
||||||
* Establish a PDO connection to a SQLite database.
|
* Establish a PDO connection to a SQLite database.
|
||||||
*
|
*
|
||||||
|
* SQLite database paths can be specified either relative to the application/db
|
||||||
|
* directory, or as an absolute path to any location on the file system.
|
||||||
|
*
|
||||||
* @param array $config
|
* @param array $config
|
||||||
* @return PDO
|
* @return PDO
|
||||||
*/
|
*/
|
||||||
private static function connect_to_sqlite($config)
|
private static function connect_to_sqlite($config)
|
||||||
{
|
{
|
||||||
// Database paths can either be specified relative to the application/storage/db
|
|
||||||
// directory, or as an absolute path.
|
|
||||||
|
|
||||||
if (file_exists($path = APP_PATH.'storage/db/'.$config->database.'.sqlite'))
|
if (file_exists($path = APP_PATH.'storage/db/'.$config->database.'.sqlite'))
|
||||||
{
|
{
|
||||||
return new \PDO('sqlite:'.$path, null, null, static::$options);
|
return new \PDO('sqlite:'.$path, null, null, static::$options);
|
||||||
|
@ -84,4 +88,22 @@ private static function connect_to_server($config)
|
||||||
return $connection;
|
return $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the configuration options for a database connection.
|
||||||
|
*
|
||||||
|
* @param string $connection
|
||||||
|
* @return object
|
||||||
|
*/
|
||||||
|
private static function configuration($connection)
|
||||||
|
{
|
||||||
|
$config = Config::get('db.connections');
|
||||||
|
|
||||||
|
if ( ! array_key_exists($connection, $config))
|
||||||
|
{
|
||||||
|
throw new \Exception("Database connection [$connection] is not defined.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (object) $config[$connection];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue