SubscriptionsModel   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 84
rs 10
c 0
b 0
f 0
wmc 15

12 Methods

Rating   Name   Duplication   Size   Complexity  
A offsetSet() 0 6 2
A current() 0 3 1
A next() 0 3 1
A offsetExists() 0 3 1
A key() 0 3 1
A count() 0 3 1
A rewind() 0 3 1
A offsetUnset() 0 2 1
A valid() 0 3 1
A toArray() 0 5 1
A offsetGet() 0 5 2
A fillObjectFromArray() 0 6 2
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace Korobovn\CloudPayments\Message\Response\Model;
6
7
/**
8
 * @see https://developers.cloudpayments.ru/#poisk-podpisok
9
 */
10
class SubscriptionsModel extends AbstractModel implements \Iterator, \ArrayAccess, \Countable
11
{
12
    /** @var array|SubscriptionModel[] */
13
    protected $subscriptions = [];
14
15
    /** @var int */
16
    protected $position = 0;
17
18
    /**
19
     * {@inheritdoc}
20
     */
21
    public function fillObjectFromArray(array $data): void
22
    {
23
        foreach ($data as $subscription_data) {
24
            $subscription = new SubscriptionModel;
25
            $subscription->fillObjectFromArray($subscription_data);
26
            $this->subscriptions[] = $subscription;
27
        }
28
    }
29
30
    /**
31
     * {@inheritdoc}
32
     */
33
    public function toArray(): array
34
    {
35
        return array_map(function (SubscriptionModel $subscription) {
36
            return $subscription->toArray();
37
        }, $this->subscriptions);
38
    }
39
40
    public function current()
41
    {
42
        return $this->subscriptions[$this->position];
43
    }
44
45
    public function next(): void
46
    {
47
        $this->position++;
48
    }
49
50
    public function key()
51
    {
52
        return $this->position;
53
    }
54
55
    public function valid()
56
    {
57
        return isset($this->subscriptions[$this->position]);
58
    }
59
60
    public function rewind(): void
61
    {
62
        $this->position = 0;
63
    }
64
65
    public function offsetExists($offset)
66
    {
67
        return isset($this->subscriptions[$offset]);
68
    }
69
70
    public function offsetGet($offset)
71
    {
72
        return isset($this->subscriptions[$offset])
73
            ? $this->subscriptions[$offset]
74
            : null;
75
    }
76
77
    public function offsetSet($offset, $value): void
78
    {
79
        if ($offset === null) {
80
            $this->subscriptions[] = $value;
81
        } else {
82
            $this->subscriptions[$offset] = $value;
83
        }
84
    }
85
86
    public function offsetUnset($offset): void
87
    {
88
        /*unset($this->subscriptions[$offset]);*/
89
    }
90
91
    public function count()
92
    {
93
        return count($this->subscriptions);
94
    }
95
}
96