12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php namespace System\DB;
- class Connector {
- /**
- * The PDO connection options.
- *
- * @var array
- */
- public static $options = array(
- \PDO::ATTR_CASE => \PDO::CASE_LOWER,
- \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
- \PDO::ATTR_ORACLE_NULLS => \PDO::NULL_NATURAL,
- \PDO::ATTR_STRINGIFY_FETCHES => false,
- );
- /**
- * Establish a PDO database connection.
- *
- * @param object $config
- * @return PDO
- */
- public static function connect($config)
- {
- // ---------------------------------------------------
- // Establish a SQLite PDO connection.
- // ---------------------------------------------------
- if ($config->driver == 'sqlite')
- {
- return new \PDO('sqlite:'.APP_PATH.'db/'.$config->database.'.sqlite', null, null, static::$options);
- }
- // ---------------------------------------------------
- // Establish a MySQL or Postgres PDO connection.
- // ---------------------------------------------------
- elseif ($config->driver == 'mysql' or $config->driver == 'pgsql')
- {
- $connection = new \PDO($config->driver.':host='.$config->host.';dbname='.$config->database, $config->username, $config->password, static::$options);
- // ---------------------------------------------------
- // Set the correct character set.
- // ---------------------------------------------------
- if (isset($config->charset))
- {
- $connection->prepare("SET NAMES '".$config->charset."'")->execute();
- }
- return $connection;
- }
- // ---------------------------------------------------
- // If the driver isn't supported, bail out.
- // ---------------------------------------------------
- else
- {
- throw new \Exception('Database driver '.$config->driver.' is not supported.');
- }
- }
- }
|