Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/*
4
 * This file is part of the Symfony package.
5
 *
6
 * (c) Fabien Potencier <fabien@symfony.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Symfony\Component\Mailer\Transport;
13
 
14
use Symfony\Component\Mailer\Exception\InvalidArgumentException;
15
 
16
/**
17
 * @author Konstantin Myakshin <molodchick@gmail.com>
18
 */
19
final class Dsn
20
{
21
    private string $scheme;
22
    private string $host;
23
    private ?string $user;
24
    private ?string $password;
25
    private ?int $port;
26
    private array $options;
27
 
28
    public function __construct(string $scheme, string $host, string $user = null, #[\SensitiveParameter] string $password = null, int $port = null, array $options = [])
29
    {
30
        $this->scheme = $scheme;
31
        $this->host = $host;
32
        $this->user = $user;
33
        $this->password = $password;
34
        $this->port = $port;
35
        $this->options = $options;
36
    }
37
 
38
    public static function fromString(string $dsn): self
39
    {
40
        if (false === $parsedDsn = parse_url($dsn)) {
41
            throw new InvalidArgumentException(sprintf('The "%s" mailer DSN is invalid.', $dsn));
42
        }
43
 
44
        if (!isset($parsedDsn['scheme'])) {
45
            throw new InvalidArgumentException(sprintf('The "%s" mailer DSN must contain a scheme.', $dsn));
46
        }
47
 
48
        if (!isset($parsedDsn['host'])) {
49
            throw new InvalidArgumentException(sprintf('The "%s" mailer DSN must contain a host (use "default" by default).', $dsn));
50
        }
51
 
52
        $user = '' !== ($parsedDsn['user'] ?? '') ? urldecode($parsedDsn['user']) : null;
53
        $password = '' !== ($parsedDsn['pass'] ?? '') ? urldecode($parsedDsn['pass']) : null;
54
        $port = $parsedDsn['port'] ?? null;
55
        parse_str($parsedDsn['query'] ?? '', $query);
56
 
57
        return new self($parsedDsn['scheme'], $parsedDsn['host'], $user, $password, $port, $query);
58
    }
59
 
60
    public function getScheme(): string
61
    {
62
        return $this->scheme;
63
    }
64
 
65
    public function getHost(): string
66
    {
67
        return $this->host;
68
    }
69
 
70
    public function getUser(): ?string
71
    {
72
        return $this->user;
73
    }
74
 
75
    public function getPassword(): ?string
76
    {
77
        return $this->password;
78
    }
79
 
80
    public function getPort(int $default = null): ?int
81
    {
82
        return $this->port ?? $default;
83
    }
84
 
85
    public function getOption(string $key, mixed $default = null)
86
    {
87
        return $this->options[$key] ?? $default;
88
    }
89
}