Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | 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;
621 lars 10
use SensitiveParameter;
148 lars 11
 
12
final class Driver extends AbstractOracleDriver
13
{
14
    /**
15
     * {@inheritdoc}
16
     *
17
     * @return Connection
18
     */
621 lars 19
    public function connect(
20
        #[SensitiveParameter]
21
        array $params
22
    ) {
148 lars 23
        $driverOptions = $params['driverOptions'] ?? [];
24
 
25
        if (! empty($params['persistent'])) {
26
            $driverOptions[PDO::ATTR_PERSISTENT] = true;
27
        }
28
 
621 lars 29
        $safeParams = $params;
30
        unset($safeParams['password'], $safeParams['url']);
31
 
148 lars 32
        try {
33
            $pdo = new PDO(
34
                $this->constructPdoDsn($params),
35
                $params['user'] ?? '',
36
                $params['password'] ?? '',
37
                $driverOptions,
38
            );
39
        } catch (PDOException $exception) {
40
            throw Exception::new($exception);
41
        }
42
 
43
        return new Connection($pdo);
44
    }
45
 
46
    /**
47
     * Constructs the Oracle PDO DSN.
48
     *
49
     * @param mixed[] $params
50
     */
51
    private function constructPdoDsn(array $params): string
52
    {
53
        $dsn = 'oci:dbname=' . $this->getEasyConnectString($params);
54
 
55
        if (isset($params['charset'])) {
56
            $dsn .= ';charset=' . $params['charset'];
57
        }
58
 
59
        return $dsn;
60
    }
61
}