summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php')
-rw-r--r--vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
new file mode 100644
index 0000000..963fef0
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
@@ -0,0 +1,76 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Driver\PDO\MySQL;
6
7use Doctrine\DBAL\Driver\AbstractMySQLDriver;
8use Doctrine\DBAL\Driver\PDO\Connection;
9use Doctrine\DBAL\Driver\PDO\Exception;
10use PDO;
11use PDOException;
12use SensitiveParameter;
13
14final class Driver extends AbstractMySQLDriver
15{
16 /**
17 * {@inheritDoc}
18 */
19 public function connect(
20 #[SensitiveParameter]
21 array $params,
22 ): Connection {
23 $driverOptions = $params['driverOptions'] ?? [];
24
25 if (! empty($params['persistent'])) {
26 $driverOptions[PDO::ATTR_PERSISTENT] = true;
27 }
28
29 $safeParams = $params;
30 unset($safeParams['password']);
31
32 try {
33 $pdo = new PDO(
34 $this->constructPdoDsn($safeParams),
35 $params['user'] ?? '',
36 $params['password'] ?? '',
37 $driverOptions,
38 );
39 } catch (PDOException $exception) {
40 throw Exception::new($exception);
41 }
42
43 return new Connection($pdo);
44 }
45
46 /**
47 * Constructs the MySQL PDO DSN.
48 *
49 * @param mixed[] $params
50 */
51 private function constructPdoDsn(array $params): string
52 {
53 $dsn = 'mysql:';
54 if (isset($params['host']) && $params['host'] !== '') {
55 $dsn .= 'host=' . $params['host'] . ';';
56 }
57
58 if (isset($params['port'])) {
59 $dsn .= 'port=' . $params['port'] . ';';
60 }
61
62 if (isset($params['dbname'])) {
63 $dsn .= 'dbname=' . $params['dbname'] . ';';
64 }
65
66 if (isset($params['unix_socket'])) {
67 $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
68 }
69
70 if (isset($params['charset'])) {
71 $dsn .= 'charset=' . $params['charset'] . ';';
72 }
73
74 return $dsn;
75 }
76}