diff --git a/src/Connectors/OracleDBConnector.php b/src/Connectors/OracleDBConnector.php new file mode 100644 index 0000000..2392de0 --- /dev/null +++ b/src/Connectors/OracleDBConnector.php @@ -0,0 +1,64 @@ + PDO::CASE_NATURAL, + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, + PDO::ATTR_STRINGIFY_FETCHES => false, + ); + + /** + * Establish a database connection. + * + * @param array $config + * @return PDO + */ + public function connect(array $config) + { + $options = $this->getOptions($config); + + return $this->createConnection($this->getDsn($config), $config, $options); + } + + /** + * Create a DSN string from a configuration. + * + * @param array $config + * @return string + */ + protected function getDsn(array $config) + { + extract($config); + + // First we will create the basic DSN setup as well as the port if it is in + // in the configuration options. This will give us the basic DSN we will + // need to establish the PDO connections and return them back for use. + + if (in_array('oci', $this->getAvailableDrivers())) + { + return "oci:dbname={$dbtns};charset=utf8"; + } + } + + /** + * Get the available PDO drivers. + * + * @return array + */ + protected function getAvailableDrivers() + { + return PDO::getAvailableDrivers(); + } + +} diff --git a/src/Engines/EngineTrait.php b/src/Engines/EngineTrait.php index ab97850..132e357 100644 --- a/src/Engines/EngineTrait.php +++ b/src/Engines/EngineTrait.php @@ -43,6 +43,8 @@ public function createConnector(array $config) return new SqlServerConnector; case 'filesystem': return new FileSystemConnector; + case 'oracledb': + return new OracleDBConnector; } throw new Exception("Unsupported driver [{$config['driver']}]"); }