summaryrefslogtreecommitdiff
path: root/src/illuminate/FirebirdConnector.php
blob: 3517f34d0d07633c08cbb5fa284b55c5e14e195b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php

namespace  Firebird\Illuminate;

use Illuminate\Database\Connectors\Connector;
use Illuminate\Database\Connectors\ConnectorInterface;
use PDO;

class FirebirdConnector extends Connector implements ConnectorInterface
{
    /**
     * Establish a database connection.
     *
     * @param  array  $config
     * @return \PDO
     */
    public function connect(array $config): PDO
    {
        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): string
    {
        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;
    }
}