Completed
Push — master ( 3ee5ff...5084e8 )
by Joachim
12:38
created

Payload::simplePayload()   B

Complexity

Conditions 6
Paths 4

Size

Total Lines 21
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 11
cts 11
cp 1
rs 8.7624
c 0
b 0
f 0
cc 6
eloc 11
nc 4
nop 1
crap 6
1
<?php
2
namespace Loevgaard\AltaPay\Payload;
3
4
abstract class Payload implements PayloadInterface
5
{
6
    /**
7
     * @inheritdoc
8
     */
9
    public function getPayload(): array
10
    {
11 3
        return [];
12
    }
13 3
14
    /**
15
     * If the input array contains objects of PayloadInterface it will convert these to simple arrays
16
     * Also it will remove values that are null or empty arrays
17
     *
18
     * @param array $payload
19
     * @return array
20
     */
21
    public static function simplePayload(array $payload) : array
22 6
    {
23
        $payload = array_filter($payload, function ($val) {
24 6
            // this will effectively remove empty arrays
25 6
            if (is_array($val) && empty($val)) {
26 6
                return false;
27 4
            }
28 4
29
            return !is_null($val);
30 6
        });
31
32
        foreach ($payload as $key => $val) {
33 6
            if (is_array($val)) {
34
                $payload[$key] = static::simplePayload($val);
35 6
            } elseif ($val instanceof PayloadInterface) {
36 6
                $payload[$key] = static::simplePayload($val->getPayload());
37
            }
38
        }
39 3
40
        return $payload;
41
    }
42
}
43