SubscriptionsModel::valid()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
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