diff options
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php')
-rw-r--r-- | vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php | 80 |
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 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\IBMDB2; | ||
6 | |||
7 | use SensitiveParameter; | ||
8 | |||
9 | use function implode; | ||
10 | use function sprintf; | ||
11 | use function str_contains; | ||
12 | |||
13 | /** | ||
14 | * IBM DB2 DSN | ||
15 | */ | ||
16 | final 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 | } | ||