Test Failed
Push — main ( f5d985...a31f0b )
by Paul
08:37
created

Arguments::exists()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace GeminiLabs\SiteReviews;
4
5
use GeminiLabs\SiteReviews\Helpers\Arr;
6
use GeminiLabs\SiteReviews\Helpers\Cast;
7
use GeminiLabs\SiteReviews\Helpers\Str;
8
use GeminiLabs\SiteReviews\Modules\Sanitizer;
9
10
class Arguments extends \ArrayObject
11
{
12
    /**
13
     * @param mixed $args
14 26
     */
15
    public function __construct($args = [])
16 26
    {
17 8
        if ($args instanceof Arguments) {
18
            $args = $args->toArray();
19 26
        } else {
20
            $args = Arr::consolidate($args);
21 26
        }
22
        parent::__construct($args, \ArrayObject::STD_PROP_LIST | \ArrayObject::ARRAY_AS_PROPS);
23
    }
24
25
    public function __toString(): string
26
    {
27 7
        return serialize($this->toArray());
28
    }
29 7
30
    /**
31
     * @param mixed $key
32
     */
33
    public function array($key, array $fallback = []): array
34
    {
35
        return Arr::consolidate($this->get($key, $fallback));
36
    }
37 8
38
    /**
39 8
     * @param mixed $key
40
     *
41
     * @return mixed
42
     */
43
    public function cast($key, string $cast, $fallback = null)
44
    {
45
        return Cast::to($cast, $this->get($key, $fallback));
46
    }
47 34
48
    public function exists(string $key): bool
49 34
    {
50 34
        return $this->offsetExists($key);
51 25
    }
52 34
53
    /**
54
     * @param mixed $key
55
     * @param mixed $fallback
56
     *
57
     * @return mixed
58
     */
59
    public function get($key, $fallback = null)
60
    {
61
        $value = Arr::get($this->getArrayCopy(), $key, null);
62
        if (is_null($fallback)) {
63
            return $value;
64
        }
65
        return Helper::ifEmpty($value, $fallback);
66 25
    }
67
68 25
    public function isEmpty(): bool
69 25
    {
70 25
        return empty($this->getArrayCopy());
71
    }
72
73
    /**
74
     * @return self
75
     */
76
    public function merge(array $data = [])
77
    {
78 25
        $storage = wp_parse_args($data, $this->getArrayCopy());
79
        $this->exchangeArray($storage);
80 25
        return $this;
81
    }
82
83
    /**
84
     * @param mixed $key
85
     *
86
     * @return mixed
87
     */
88 4
    #[\ReturnTypeWillChange]
89
    public function offsetGet($key)
90 4
    {
91 4
        return $this->get($key);
92 4
    }
93
94
    /**
95
     * @param mixed $key
96
     */
97
    #[\ReturnTypeWillChange]
98
    public function offsetUnset($key): void
99
    {
100
        $storage = $this->getArrayCopy();
101
        unset($storage[$key]);
102
        $this->exchangeArray($storage);
103
    }
104
105
    /**
106
     * @return self
107
     */
108
    public function replace(array $data = [])
109
    {
110
        $this->exchangeArray($data);
111
        return $this;
112
    }
113 31
114
    /**
115 31
     * @param mixed $key
116 31
     *
117
     * @return mixed
118
     */
119
    public function sanitize($key, string $sanitizer)
120
    {
121
        $sanitizers = ['key' => $sanitizer];
122
        $values = ['key' => $this->get($key)];
123 26
        $values = glsr(Sanitizer::class, compact('values', 'sanitizers'))->run();
124
        return Arr::get($values, 'key');
125 26
    }
126
127
    /**
128
     * @param mixed $value
129
     */
130
    public function set(string $path, $value): void
131
    {
132
        $storage = Arr::set($this->getArrayCopy(), $path, $value);
133
        $this->exchangeArray($storage);
134
    }
135
136
    /**
137
     * @param array $args Optional parameter that can be used to change the output
138
     */
139
    public function toArray(array $args = []): array
140
    {
141
        return Cast::toArrayDeep($this->getArrayCopy());
142
    }
143
}
144