Subversion-Projekte lars-tiefland.laravel_shop

Revision

Zur aktuellen Revision | Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Doctrine\DBAL\Driver\PDO\OCI;
4
 
5
use Doctrine\DBAL\Driver\AbstractOracleDriver;
6
use Doctrine\DBAL\Driver\PDO\Connection;
7
use Doctrine\DBAL\Driver\PDO\Exception;
8
use PDO;
9
use PDOException;
10
 
11
final class Driver extends AbstractOracleDriver
12
{
13
    /**
14
     * {@inheritdoc}
15
     *
16
     * @return Connection
17
     */
18
    public function connect(array $params)
19
    {
20
        $driverOptions = $params['driverOptions'] ?? [];
21
 
22
        if (! empty($params['persistent'])) {
23
            $driverOptions[PDO::ATTR_PERSISTENT] = true;
24
        }
25
 
26
        try {
27
            $pdo = new PDO(
28
                $this->constructPdoDsn($params),
29
                $params['user'] ?? '',
30
                $params['password'] ?? '',
31
                $driverOptions,
32
            );
33
        } catch (PDOException $exception) {
34
            throw Exception::new($exception);
35
        }
36
 
37
        return new Connection($pdo);
38
    }
39
 
40
    /**
41
     * Constructs the Oracle PDO DSN.
42
     *
43
     * @param mixed[] $params
44
     */
45
    private function constructPdoDsn(array $params): string
46
    {
47
        $dsn = 'oci:dbname=' . $this->getEasyConnectString($params);
48
 
49
        if (isset($params['charset'])) {
50
            $dsn .= ';charset=' . $params['charset'];
51
        }
52
 
53
        return $dsn;
54
    }
55
}