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\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;
10
 
11
final class Driver extends AbstractMySQLDriver
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 MySQL PDO DSN.
42
     *
43
     * @param mixed[] $params
44
     */
45
    private function constructPdoDsn(array $params): string
46
    {
47
        $dsn = 'mysql:';
48
        if (isset($params['host']) && $params['host'] !== '') {
49
            $dsn .= 'host=' . $params['host'] . ';';
50
        }
51
 
52
        if (isset($params['port'])) {
53
            $dsn .= 'port=' . $params['port'] . ';';
54
        }
55
 
56
        if (isset($params['dbname'])) {
57
            $dsn .= 'dbname=' . $params['dbname'] . ';';
58
        }
59
 
60
        if (isset($params['unix_socket'])) {
61
            $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
62
        }
63
 
64
        if (isset($params['charset'])) {
65
            $dsn .= 'charset=' . $params['charset'] . ';';
66
        }
67
 
68
        return $dsn;
69
    }
70
}