Serialization::filterUnset()   A
last analyzed

Complexity

Conditions 4
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 14
c 0
b 0
f 0
ccs 7
cts 7
cp 1
rs 9.7998
cc 4
nc 1
nop 1
crap 4
1
<?php
2
declare(strict_types=1);
3
4
namespace TechDeCo\ElasticApmAgent;
5
6
use JsonSerializable;
7
use function array_filter;
8
use function array_map;
9
use function is_array;
10
11
final class Serialization
12
{
13
    /**
14
     * @param mixed[] $input
15
     * @return mixed[]
16
     */
17 101
    public static function filterUnset(array $input): array
18
    {
19
        return array_filter($input, function ($value): bool {
20 101
            if ($value === null) {
21 92
                return false;
22
            }
23
24 98
            if (is_array($value) && empty($value)) {
0 ignored issues
show
Unused Code introduced by
This if statement, and the following return statement can be replaced with return !(\is_array($value) && empty($value));.
Loading history...
25 83
                return false;
26
            }
27
28 96
            return true;
29 101
        });
30
    }
31
32
    /**
33
     * @return mixed[]
34
     */
35 69
    public static function serialize(JsonSerializable ...$serializable): array
36
    {
37
        return array_map(function (JsonSerializable $frame) {
38 53
            return $frame->jsonSerialize();
39 69
        }, $serializable);
40
    }
41
42
    /**
43
     * @param mixed $fallback
44
     * @return mixed
45
     */
46 72
    public static function serializeOr(?JsonSerializable $serializable, $fallback = null)
47
    {
48 72
        return $serializable === null ? $fallback : $serializable->jsonSerialize();
49
    }
50
}
51