| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?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)	{		// -----------------------------------------------------		// Connect to SQLite.		// -----------------------------------------------------		if ($config->driver == 'sqlite')		{			// -----------------------------------------------------			// Check the application/db directory first.			//			// If the database doesn't exist there, maybe the full			// path was specified as the database name?			// -----------------------------------------------------			if (file_exists($path = APP_PATH.'storage/db/'.$config->database.'.sqlite'))			{				return new \PDO('sqlite:'.$path, null, null, static::$options);			}			elseif (file_exists($config->database))			{				return new \PDO('sqlite:'.$config->database, null, null, static::$options);			}			else			{				throw new \Exception("SQLite database [".$config->database."] could not be found.");			}		}		// -----------------------------------------------------		// Connect to MySQL or Postgres.		// -----------------------------------------------------		elseif ($config->driver == 'mysql' or $config->driver == 'pgsql')		{			// -----------------------------------------------------			// Build the PDO connection DSN.			// -----------------------------------------------------			$dsn = $config->driver.':host='.$config->host.';dbname='.$config->database;			if (isset($config->port))			{				$dsn .= ';port='.$config->port;			}			$connection = new \PDO($dsn, $config->username, $config->password, static::$options);			// -----------------------------------------------------			// Set the appropriate character set for the datbase.			// -----------------------------------------------------			if (isset($config->charset))			{				$connection->prepare("SET NAMES '".$config->charset."'")->execute();			}			return $connection;		}		throw new \Exception('Database driver '.$config->driver.' is not supported.');	}}
 |