summaryrefslogtreecommitdiff
path: root/src/FirebirdConnector.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/FirebirdConnector.php')
-rwxr-xr-xsrc/FirebirdConnector.php57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/FirebirdConnector.php b/src/FirebirdConnector.php
new file mode 100755
index 0000000..99ed3ba
--- /dev/null
+++ b/src/FirebirdConnector.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Xgrz\Firebird;
+
+use Illuminate\Database\Connectors\Connector;
+use Illuminate\Database\Connectors\ConnectorInterface;
+
+class FirebirdConnector extends Connector implements ConnectorInterface
+{
+ /**
+ * Establish a database connection.
+ *
+ * @param array $config
+ * @return \PDO
+ */
+ public function connect(array $config)
+ {
+ return $this->createConnection(
+ $this->getDsn($config),
+ $config,
+ $this->getOptions($config)
+ );
+ }
+
+ /**
+ * Create a DSN string from the configuration.
+ *
+ * @param array $config
+ * @return string
+ */
+ protected function getDsn(array $config)
+ {
+ extract($config);
+
+ if (! isset($host) || ! isset($database)) {
+ trigger_error('Cannot connect to Firebird Database, no host or database supplied');
+ }
+
+ $dsn = "firebird:dbname={$host}";
+
+ if (isset($port)) {
+ $dsn .= "/{$port}";
+ }
+
+ $dsn .= ":{$database};";
+
+ if (isset($role)) {
+ $dsn .= "role={$role};";
+ }
+
+ if (isset($charset)) {
+ $dsn .= "charset={$charset};";
+ }
+
+ return $dsn;
+ }
+}