Completed
Pull Request — master (#39)
by Daniel
04:05
created

PropertyNameConverterStrategyProvider::remove()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
c 0
b 0
f 0
dl 0
loc 10
rs 10
cc 2
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jellyfish\SerializerSymfony\NameConverter;
6
7
use Jellyfish\Serializer\NameConverter\PropertyNameConverterStrategyInterface;
8
9
class PropertyNameConverterStrategyProvider implements PropertyNameConverterStrategyProviderInterface
10
{
11
    /**
12
     * @var \Jellyfish\Serializer\NameConverter\PropertyNameConverterStrategyInterface[]
13
     */
14
    protected $propertyNameConverterStrategyList = [];
15
16
    /**
17
     * @param string $propertyNameConverterStrategyKey
18
     * @param \Jellyfish\Serializer\NameConverter\PropertyNameConverterStrategyInterface $propertyNameConverterStrategy
19
     *
20
     * @return \Jellyfish\SerializerSymfony\NameConverter\PropertyNameConverterStrategyProviderInterface
21
     */
22
    public function add(
23
        string $propertyNameConverterStrategyKey,
24
        PropertyNameConverterStrategyInterface $propertyNameConverterStrategy
25
    ): PropertyNameConverterStrategyProviderInterface {
26
        $this->propertyNameConverterStrategyList[$propertyNameConverterStrategyKey] = $propertyNameConverterStrategy;
27
28
        return $this;
29
    }
30
31
    /**
32
     * @param string $propertyNameConverterStrategyKey
33
     *
34
     * @return \Jellyfish\SerializerSymfony\NameConverter\PropertyNameConverterStrategyProviderInterface
35
     */
36
    public function remove(
37
        string $propertyNameConverterStrategyKey
38
    ): PropertyNameConverterStrategyProviderInterface {
39
        if (!$this->has($propertyNameConverterStrategyKey)) {
40
            return $this;
41
        }
42
43
        unset($this->propertyNameConverterStrategyList[$propertyNameConverterStrategyKey]);
44
45
        return $this;
46
    }
47
48
    /**
49
     * @return \Jellyfish\Serializer\NameConverter\PropertyNameConverterStrategyInterface[]
50
     */
51
    public function getAll(): array
52
    {
53
        return $this->propertyNameConverterStrategyList;
54
    }
55
56
    /**
57
     * @param string $propertyNameConverterStrategyKey
58
     *
59
     * @return bool
60
     */
61
    public function has(string $propertyNameConverterStrategyKey): bool
62
    {
63
        return array_key_exists($propertyNameConverterStrategyKey, $this->propertyNameConverterStrategyList);
64
    }
65
66
    /**
67
     * @param string $propertyNameConverterStrategyKey
68
     *
69
     * @return \Jellyfish\Serializer\NameConverter\PropertyNameConverterStrategyInterface|null
70
     */
71
    public function get(string $propertyNameConverterStrategyKey): ?PropertyNameConverterStrategyInterface
72
    {
73
        if (!$this->has($propertyNameConverterStrategyKey)) {
74
            return null;
75
        }
76
77
        return $this->propertyNameConverterStrategyList[$propertyNameConverterStrategyKey];
78
    }
79
}
80