Completed
Push — master ( 53dd23...58e367 )
by BENOIT
01:13
created

QueryStringRendererTrait::getEncoding()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace BenTools\QueryString\Renderer;
4
5
trait QueryStringRendererTrait
6
{
7
    /**
8
     * @var int
9
     */
10
    protected $encoding;
11
12
    /**
13
     * @var string|null
14
     */
15
    protected $separator;
16
17
    /**
18
     * @return int
19
     */
20
    public function getEncoding(): int
21
    {
22
        return $this->encoding;
23
    }
24
25
    /**
26
     * @param int $encoding
27
     * @return QueryStringRendererInterface
28
     * @throws \InvalidArgumentException
29
     */
30
    public function withEncoding(int $encoding): QueryStringRendererInterface
31
    {
32
        self::validateEncoding($encoding);
33
34
        $clone = clone $this;
35
        $clone->encoding = $encoding;
36
        return $clone;
37
    }
38
39
    /**
40
     * @return null|string
41
     */
42
    public function getSeparator(): ?string
43
    {
44
        return $this->separator;
45
    }
46
47
    /**
48
     * @param null|string $separator
49
     * @return QueryStringRendererInterface
50
     */
51
    public function withSeparator(?string $separator): QueryStringRendererInterface
52
    {
53
        $clone = clone $this;
54
        $clone->separator = $separator;
55
56
        return $clone;
57
    }
58
59
    /**
60
     * @param int $encoding
61
     * @throws \InvalidArgumentException
62
     */
63
    protected static function validateEncoding(int $encoding): void
64
    {
65
        if (!in_array($encoding, [PHP_QUERY_RFC1738, PHP_QUERY_RFC3986])) {
66
            throw new \InvalidArgumentException("Invalid encoding.");
67
        }
68
    }
69
}
70