Passed
Pull Request — master (#3092)
by Michael
13:56
created

Driver::connect()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 14
ccs 9
cts 9
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 9
nc 2
nop 4
crap 2
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the MIT license. For more information, see
17
 * <http://www.doctrine-project.org>.
18
 */
19
20
namespace Doctrine\DBAL\Driver\PDOMySql;
21
22
use Doctrine\DBAL\DBALException;
23
use Doctrine\DBAL\Driver\AbstractMySQLDriver;
24
use Doctrine\DBAL\Driver\PDOConnection;
25
use PDOException;
26
27
/**
28
 * PDO MySql driver.
29
 *
30
 * @since 2.0
31
 */
32
class Driver extends AbstractMySQLDriver
33
{
34
    /**
35
     * {@inheritdoc}
36
     */
37 205
    public function connect(array $params, $username = null, $password = null, array $driverOptions = [])
38
    {
39
        try {
40 205
            $conn = new PDOConnection(
41 205
                $this->constructPdoDsn($params),
42 205
                $username,
43 205
                $password,
44 205
                $driverOptions
45
            );
46 20
        } catch (PDOException $e) {
47 20
            throw DBALException::driverException($this, $e);
48
        }
49
50 190
        return $conn;
51
    }
52
53
    /**
54
     * Constructs the MySql PDO DSN.
55
     *
56
     * @param array $params
57
     *
58
     * @return string The DSN.
59
     */
60 205
    protected function constructPdoDsn(array $params)
61
    {
62 205
        $dsn = 'mysql:';
63 205
        if (isset($params['host']) && $params['host'] != '') {
64 205
            $dsn .= 'host=' . $params['host'] . ';';
65
        }
66 205
        if (isset($params['port'])) {
67 205
            $dsn .= 'port=' . $params['port'] . ';';
68
        }
69 205
        if (isset($params['dbname'])) {
70 195
            $dsn .= 'dbname=' . $params['dbname'] . ';';
71
        }
72 205
        if (isset($params['unix_socket'])) {
73
            $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
74
        }
75 205
        if (isset($params['charset'])) {
76 5
            $dsn .= 'charset=' . $params['charset'] . ';';
77
        }
78
79 205
        return $dsn;
80
    }
81
82
    /**
83
     * {@inheritdoc}
84
     */
85 42
    public function getName()
86
    {
87 42
        return 'pdo_mysql';
88
    }
89
}
90