Refactor DB\Connector class.
This commit is contained in:
parent
9454927bd3
commit
60e3526313
|
@ -22,17 +22,29 @@ class Connector {
|
||||||
*/
|
*/
|
||||||
public static function connect($config)
|
public static function connect($config)
|
||||||
{
|
{
|
||||||
// -----------------------------------------------------
|
|
||||||
// Connect to SQLite.
|
|
||||||
// -----------------------------------------------------
|
|
||||||
if ($config->driver == 'sqlite')
|
if ($config->driver == 'sqlite')
|
||||||
{
|
{
|
||||||
// -----------------------------------------------------
|
return static::connect_to_sqlite($config);
|
||||||
// Check the application/db directory first.
|
}
|
||||||
//
|
elseif ($config->driver == 'mysql' or $config->driver == 'pgsql')
|
||||||
// If the database doesn't exist there, maybe the full
|
{
|
||||||
// path was specified as the database name?
|
return static::connect_to_server($config);
|
||||||
// -----------------------------------------------------
|
}
|
||||||
|
|
||||||
|
throw new \Exception('Database driver '.$config->driver.' is not supported.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Establish a PDO connection to a SQLite database.
|
||||||
|
*
|
||||||
|
* @param array $config
|
||||||
|
* @return PDO
|
||||||
|
*/
|
||||||
|
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);
|
||||||
|
@ -46,14 +58,15 @@ public static function connect($config)
|
||||||
throw new \Exception("SQLite database [".$config->database."] could not be found.");
|
throw new \Exception("SQLite database [".$config->database."] could not be found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// -----------------------------------------------------
|
|
||||||
// Connect to MySQL or Postgres.
|
/**
|
||||||
// -----------------------------------------------------
|
* Connect to a MySQL or PostgreSQL database server.
|
||||||
elseif ($config->driver == 'mysql' or $config->driver == 'pgsql')
|
*
|
||||||
|
* @param array $config
|
||||||
|
* @return PDO
|
||||||
|
*/
|
||||||
|
private static function connect_to_server($config)
|
||||||
{
|
{
|
||||||
// -----------------------------------------------------
|
|
||||||
// Build the PDO connection DSN.
|
|
||||||
// -----------------------------------------------------
|
|
||||||
$dsn = $config->driver.':host='.$config->host.';dbname='.$config->database;
|
$dsn = $config->driver.':host='.$config->host.';dbname='.$config->database;
|
||||||
|
|
||||||
if (isset($config->port))
|
if (isset($config->port))
|
||||||
|
@ -63,9 +76,6 @@ public static function connect($config)
|
||||||
|
|
||||||
$connection = new \PDO($dsn, $config->username, $config->password, static::$options);
|
$connection = new \PDO($dsn, $config->username, $config->password, static::$options);
|
||||||
|
|
||||||
// -----------------------------------------------------
|
|
||||||
// Set the appropriate character set for the datbase.
|
|
||||||
// -----------------------------------------------------
|
|
||||||
if (isset($config->charset))
|
if (isset($config->charset))
|
||||||
{
|
{
|
||||||
$connection->prepare("SET NAMES '".$config->charset."'")->execute();
|
$connection->prepare("SET NAMES '".$config->charset."'")->execute();
|
||||||
|
@ -74,7 +84,4 @@ public static function connect($config)
|
||||||
return $connection;
|
return $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new \Exception('Database driver '.$config->driver.' is not supported.');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue