Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace Doctrine\DBAL\Driver\IBMDB2;
6
 
621 lars 7
use SensitiveParameter;
8
 
148 lars 9
use function implode;
10
use function sprintf;
11
use function strpos;
12
 
13
/**
14
 * IBM DB2 DSN
15
 */
16
final class DataSourceName
17
{
18
    private string $string;
19
 
621 lars 20
    private function __construct(
21
        #[SensitiveParameter]
22
        string $string
23
    ) {
148 lars 24
        $this->string = $string;
25
    }
26
 
27
    public function toString(): string
28
    {
29
        return $this->string;
30
    }
31
 
32
    /**
33
     * Creates the object from an array representation
34
     *
35
     * @param array<string,mixed> $params
36
     */
621 lars 37
    public static function fromArray(
38
        #[SensitiveParameter]
39
        array $params
40
    ): self {
148 lars 41
        $chunks = [];
42
 
43
        foreach ($params as $key => $value) {
44
            $chunks[] = sprintf('%s=%s', $key, $value);
45
        }
46
 
47
        return new self(implode(';', $chunks));
48
    }
49
 
50
    /**
51
     * Creates the object from the given DBAL connection parameters.
52
     *
53
     * @param array<string,mixed> $params
54
     */
621 lars 55
    public static function fromConnectionParameters(
56
        #[SensitiveParameter]
57
        array $params
58
    ): self {
148 lars 59
        if (isset($params['dbname']) && strpos($params['dbname'], '=') !== false) {
60
            return new self($params['dbname']);
61
        }
62
 
63
        $dsnParams = [];
64
 
65
        foreach (
66
            [
67
                'host'     => 'HOSTNAME',
68
                'port'     => 'PORT',
69
                'protocol' => 'PROTOCOL',
70
                'dbname'   => 'DATABASE',
71
                'user'     => 'UID',
72
                'password' => 'PWD',
73
            ] as $dbalParam => $dsnParam
74
        ) {
75
            if (! isset($params[$dbalParam])) {
76
                continue;
77
            }
78
 
79
            $dsnParams[$dsnParam] = $params[$dbalParam];
80
        }
81
 
82
        return self::fromArray($dsnParams);
83
    }
84
}