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\MySQL;
4
 
5
use Doctrine\DBAL\Driver\AbstractMySQLDriver;
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 AbstractMySQLDriver
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(
621 lars 34
                $this->constructPdoDsn($safeParams),
148 lars 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 MySQL PDO DSN.
48
     *
49
     * @param mixed[] $params
50
     */
51
    private function constructPdoDsn(array $params): string
52
    {
53
        $dsn = 'mysql:';
54
        if (isset($params['host']) && $params['host'] !== '') {
55
            $dsn .= 'host=' . $params['host'] . ';';
56
        }
57
 
58
        if (isset($params['port'])) {
59
            $dsn .= 'port=' . $params['port'] . ';';
60
        }
61
 
62
        if (isset($params['dbname'])) {
63
            $dsn .= 'dbname=' . $params['dbname'] . ';';
64
        }
65
 
66
        if (isset($params['unix_socket'])) {
67
            $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
68
        }
69
 
70
        if (isset($params['charset'])) {
71
            $dsn .= 'charset=' . $params['charset'] . ';';
72
        }
73
 
74
        return $dsn;
75
    }
76
}