summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php')
-rw-r--r--vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php
new file mode 100644
index 0000000..4c02de1
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php
@@ -0,0 +1,61 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Driver\PDO\OCI;
6
7use Doctrine\DBAL\Driver\AbstractOracleDriver;
8use Doctrine\DBAL\Driver\PDO\Connection;
9use Doctrine\DBAL\Driver\PDO\Exception;
10use PDO;
11use PDOException;
12use SensitiveParameter;
13
14final class Driver extends AbstractOracleDriver
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($params),
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 Oracle PDO DSN.
48 *
49 * @param mixed[] $params
50 */
51 private function constructPdoDsn(array $params): string
52 {
53 $dsn = 'oci:dbname=' . $this->getEasyConnectString($params);
54
55 if (isset($params['charset'])) {
56 $dsn .= ';charset=' . $params['charset'];
57 }
58
59 return $dsn;
60 }
61}