Completed
Push — master ( 63e481...1e8bb2 )
by Dominik
01:52
created

ModelCollection::rewind()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Chubbyphp\Model\Collection;
4
5
use Chubbyphp\Model\ModelInterface;
6
7
class ModelCollection implements ModelCollectionInterface
8
{
9
    /**
10
     * @var ModelInterface[]|array
11
     */
12
    private $models = [];
13
14
    /**
15
     * @return ModelInterface
16
     */
17
    public function current()
18
    {
19
        return current($this->models);
20
    }
21
22
    /**
23
     * @return ModelInterface|false
24
     */
25
    public function next()
26
    {
27
        return next($this->models);
28
    }
29
30
    /**
31
     * @return string
32
     */
33
    public function key()
34
    {
35
        return key($this->models);
36
    }
37
38
    /**
39
     * @return bool
40
     */
41
    public function valid()
42
    {
43
        return (bool) current($this->models);
44
    }
45
46
    public function rewind()
47
    {
48
        reset($this->models);
49
    }
50
51
    /**
52
     * @param ModelInterface $model
53
     * @return ModelCollectionInterface
54
     */
55
    public function add(ModelInterface $model): ModelCollectionInterface
56
    {
57
        $this->models[$model->getId()] = $model;
58
59
        return $this;
60
    }
61
62
    /**
63
     * @param ModelInterface $model
64
     * @return ModelCollectionInterface
65
     */
66
    public function remove(ModelInterface $model): ModelCollectionInterface
67
    {
68
        if (isset($this->models[$model->getId()])) {
69
            unset($this->models[$model->getId()]);
70
        }
71
72
        return $this;
73
    }
74
75
    /**
76
     * @return ModelInterface[]|array
77
     */
78
    public function toPersist(): array
79
    {
80
        return $this->models;
81
    }
82
83
    /**
84
     * @return ModelInterface[]|array
85
     */
86
    public function toRemove(): array
87
    {
88
        return [];
89
    }
90
91
    /**
92
     * @return array
93
     */
94
    public function jsonSerialize(): array
95
    {
96
        $serialzedModels = [];
97
        foreach ($this->models as $model) {
98
            $serialzedModels[] = $model->jsonSerialize();
99
        }
100
101
        return $serialzedModels;
102
    }
103
}
104