WValues   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 17
dl 0
loc 38
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B changed() 0 27 7
1
<?php
2
/**
3
 * KV store values changed
4
 * User: moyo
5
 * Date: 13/10/2017
6
 * Time: 6:01 PM
7
 */
8
9
namespace Carno\Consul\Chips;
10
11
use Carno\Consul\Types\KVs;
12
13
trait WValues
14
{
15
    /**
16
     * @var KVs
17
     */
18
    private $prev = null;
19
20
    /**
21
     * @param KVs $kvs
22
     * @return array
23
     */
24
    protected function changed(KVs $kvs) : array
25
    {
26
        $changes = [];
27
28
        $curr = (array) $kvs;
29
        $prev = $this->prev ? (array) $this->prev : [];
30
31
        $this->prev = $kvs;
32
33
        foreach ($curr as $k => $v) {
34
            if (isset($prev[$k])) {
35
                if ($prev[$k] != $v) {
36
                    $changes[$k] = $v;
37
                }
38
                unset($prev[$k]);
39
            } else {
40
                $changes[$k] = $v;
41
            }
42
        }
43
44
        if ($prev) {
45
            foreach ($prev as $k => $v) {
46
                $changes[$k] = null;
47
            }
48
        }
49
50
        return $changes;
51
    }
52
}
53