summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php')
-rw-r--r--vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php80
1 files changed, 80 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php
new file mode 100644
index 0000000..a1e5948
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php
@@ -0,0 +1,80 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Driver\IBMDB2;
6
7use SensitiveParameter;
8
9use function implode;
10use function sprintf;
11use function str_contains;
12
13/**
14 * IBM DB2 DSN
15 */
16final class DataSourceName
17{
18 private function __construct(
19 #[SensitiveParameter]
20 private readonly string $string,
21 ) {
22 }
23
24 public function toString(): string
25 {
26 return $this->string;
27 }
28
29 /**
30 * Creates the object from an array representation
31 *
32 * @param array<string,mixed> $params
33 */
34 public static function fromArray(
35 #[SensitiveParameter]
36 array $params,
37 ): self {
38 $chunks = [];
39
40 foreach ($params as $key => $value) {
41 $chunks[] = sprintf('%s=%s', $key, $value);
42 }
43
44 return new self(implode(';', $chunks));
45 }
46
47 /**
48 * Creates the object from the given DBAL connection parameters.
49 *
50 * @param array<string,mixed> $params
51 */
52 public static function fromConnectionParameters(#[SensitiveParameter]
53 array $params,): self
54 {
55 if (isset($params['dbname']) && str_contains($params['dbname'], '=')) {
56 return new self($params['dbname']);
57 }
58
59 $dsnParams = [];
60
61 foreach (
62 [
63 'host' => 'HOSTNAME',
64 'port' => 'PORT',
65 'protocol' => 'PROTOCOL',
66 'dbname' => 'DATABASE',
67 'user' => 'UID',
68 'password' => 'PWD',
69 ] as $dbalParam => $dsnParam
70 ) {
71 if (! isset($params[$dbalParam])) {
72 continue;
73 }
74
75 $dsnParams[$dsnParam] = $params[$dbalParam];
76 }
77
78 return self::fromArray($dsnParams);
79 }
80}