Completed
Push — develop ( 72ba3e...de019a )
by Marco
25s queued 12s
created

Driver::constructPdoDsn()   B

Complexity

Conditions 7
Paths 32

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 7.0222

Importance

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