diff options
Diffstat (limited to 'src/FirebirdConnector.php')
| -rwxr-xr-x | src/FirebirdConnector.php | 57 |
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; + } +} |
