Passed
Pull Request — master (#62)
by Alexander
07:46
created

UnsetValue::withKey()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Arrays\Collection\Modifier;
6
7
use Yiisoft\Arrays\Collection\Modifier\ModifierInterface\DataModifierInterface;
8
9
/**
10
 * Removes an array element with a given key.
11
 *
12
 * Simple usage:
13
 *
14
 * ```php
15
 * $unsetCode = new UnsetValue('code');
16
 *
17
 * // ['message' => 'Success']
18
 * $result = $unsetCode->apply(['code' => 42, 'message' => 'Success']);
19
 * ```
20
 *
21
 * Usage with merge:
22
 *
23
 * ```php
24
 * $a = [
25
 *     'name' => 'Yii',
26
 *     'version' => '1.1',
27
 *     'options' => [
28
 *         'namespace' => false,
29
 *         'unittest' => false,
30
 *     ],
31
 *     'features' => [
32
 *         'mvc',
33
 *     ],
34
 * ];
35
 * $b = new ArrayCollection(
36
 *     [
37
 *         'version' => '3.0',
38
 *         'features' => [
39
 *             'gii',
40
 *         ],
41
 *     ],
42
 *    new UnsetValue('options')
43
 * );
44
 *
45
 * // [
46
 * //     'name' => 'Yii',
47
 * //     'version' => '3.0',
48
 * //     'features' => [
49
 * //         'mvc',
50
 * //         'gii',
51
 * //     ],
52
 * // ]
53
 * $result = ArrayHelper::merge($a, $b);
54
 * ```
55
 */
56
final class UnsetValue extends Modifier implements DataModifierInterface
57
{
58
    /**
59
     * @var int|string
60
     */
61
    private $key;
62
63
    /**
64
     * @param int|string $key
65
     */
66 8
    public function __construct($key)
67
    {
68 8
        $this->key = $key;
69 8
    }
70
71
    /**
72
     * @param int|string $key
73
     *
74
     * @return self
75
     */
76 1
    public function withKey($key): self
77
    {
78 1
        $new = clone $this;
79 1
        $new->key = $key;
80 1
        return $new;
81
    }
82
83 6
    public function apply(array $data): array
84
    {
85 6
        unset($data[$this->key]);
86 6
        return $data;
87
    }
88
}
89