Completed
Pull Request — develop (#3533)
by
unknown
16:31 queued 01:26
created

Driver::getName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 0
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\DBAL\Driver\PDOMySql;
6
7
use Doctrine\DBAL\DBALException;
8
use Doctrine\DBAL\Driver\AbstractMySQLDriver;
9
use Doctrine\DBAL\Driver\PDOConnection;
10
use Doctrine\DBAL\Driver\PDOException;
11
use PDO;
12
13
/**
14
 * PDO MySql driver.
15
 */
16
class Driver extends AbstractMySQLDriver
17
{
18
    /**
19
     * {@inheritdoc}
20
     */
21 369
    public function connect(array $params, $username = null, $password = null, array $driverOptions = [])
22
    {
23 369
        if (! empty($params['persistent'])) {
24 241
            $driverOptions[PDO::ATTR_PERSISTENT] = true;
25
        }
26
27
        try {
28 369
            $conn = new PDOConnection(
29 369
                $this->constructPdoDsn($params),
30
                $username,
31
                $password,
32
                $driverOptions
33
            );
34 249
        } catch (PDOException $e) {
35 249
            throw DBALException::driverException($this, $e);
36
        }
37
38 369
        return $conn;
39
    }
40
41
    /**
42
     * Constructs the MySql PDO DSN.
43
     *
44
     * @param mixed[] $params
45
     *
46
     * @return string The DSN.
47
     */
48 369
    protected function constructPdoDsn(array $params)
49
    {
50 369
        $dsn = 'mysql:';
51 369
        if (isset($params['host']) && $params['host'] !== '') {
52 369
            $dsn .= 'host=' . $params['host'] . ';';
53
        }
54 369
        if (isset($params['port'])) {
55 369
            $dsn .= 'port=' . $params['port'] . ';';
56
        }
57 369
        if (isset($params['dbname'])) {
58 369
            $dsn .= 'dbname=' . $params['dbname'] . ';';
59
        }
60 369
        if (isset($params['unix_socket'])) {
61
            $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
62
        }
63 369
        if (isset($params['charset'])) {
64 153
            $dsn .= 'charset=' . $params['charset'] . ';';
65
        }
66
67 369
        return $dsn;
68
    }
69
70
    /**
71
     * {@inheritdoc}
72
     */
73 380
    public function getName()
74
    {
75 380
        return 'pdo_mysql';
76
    }
77
}
78