Completed
Pull Request — master (#41)
by Romain
02:55
created

UtilityTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 0
dl 0
loc 32
ccs 7
cts 7
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A arrayFilter() 0 10 3
A filter() 0 4 4
1
<?php
2
namespace Kerox\Messenger\Helper;
3
4
trait UtilityTrait
5
{
6
7
    /**
8
     * Enhanced version of array_filter which allow to filter recursively
9
     *
10
     * @param array $array
11
     * @param callable|array $callback
12
     * @return array
13
     */
14 19
    public function arrayFilter(array $array, $callback = ['self', 'filter']): array
15
    {
16 19
        foreach ($array as $k => $v) {
17 19
            if (is_array($v)) {
18 19
                $array[$k] = $this->arrayFilter($v, $callback);
19
            }
20
        }
21
22 19
        return array_filter($array, $callback);
23
    }
24
25
    /**
26
     * Callback function for filtering.
27
     *
28
     * @param mixed $var Array to filter.
29
     * @return bool
30
     */
31 19
    protected static function filter($var)
32
    {
33 19
        return $var === 0 || $var === 0.0 || $var === '0' || !empty($var);
34
    }
35
}
36