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

Driver   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Test Coverage

Coverage 83.33%

Importance

Changes 0
Metric Value
wmc 10
eloc 23
dl 0
loc 56
ccs 20
cts 24
cp 0.8333
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 3 1
B constructPdoDsn() 0 20 7
A connect() 0 14 2
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