DataContainer::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 0
c 1
b 0
f 0
dl 0
loc 2
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
/**
4
 * Platine Collection
5
 *
6
 * Platine Collection provides a flexible and simple PHP collection implementation.
7
 *
8
 * This content is released under the MIT License (MIT)
9
 *
10
 * Copyright (c) 2020 Platine Collection
11
 *
12
 * Permission is hereby granted, free of charge, to any person obtaining a copy
13
 * of this software and associated documentation files (the "Software"), to deal
14
 * in the Software without restriction, including without limitation the rights
15
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
 * copies of the Software, and to permit persons to whom the Software is
17
 * furnished to do so, subject to the following conditions:
18
 *
19
 * The above copyright notice and this permission notice shall be included in all
20
 * copies or substantial portions of the Software.
21
 *
22
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
 * SOFTWARE.
29
 */
30
31
/**
32
 *  @file DataContainer.php
33
 *
34
 *  The Data Container class contains the raw collection data
35
 *
36
 *  @package    Platine\Collection
37
 *  @author Platine Developers Team
38
 *  @copyright  Copyright (c) 2020
39
 *  @license    http://opensource.org/licenses/MIT  MIT License
40
 *  @link   https://www.platine-php.com
41
 *  @version 1.0.0
42
 *  @filesource
43
 */
44
45
declare(strict_types=1);
46
47
namespace Platine\Collection;
48
49
use ArrayAccess;
50
use ArrayIterator;
51
use IteratorAggregate;
52
53
/**
54
 * @class DataContainer
55
 * @package Platine\Collection
56
 * @template T
57
 * @implements ArrayAccess<mixed, T>
58
 * @implements IteratorAggregate<mixed, T>
59
 */
60
class DataContainer implements ArrayAccess, IteratorAggregate
61
{
62
    /**
63
     * Create new instance
64
     * @param array<int|string, T> $data
65
     */
66
    public function __construct(protected array $data = [])
67
    {
68
    }
69
70
    /**
71
     * Return the data in the container
72
     * @return array<int|string, T>
73
     */
74
    public function getData(): array
75
    {
76
        return $this->data;
77
    }
78
79
    /**
80
     * Set the data container
81
     * @param array<int|string, T> $data
82
     * @return $this
83
     */
84
    public function setData(array $data): self
85
    {
86
        $this->data = $data;
87
88
        return $this;
89
    }
90
91
92
    /**
93
     *
94
     * @return ArrayIterator<int|string, T>
95
     */
96
    public function getIterator(): ArrayIterator
97
    {
98
        return new ArrayIterator($this->data);
99
    }
100
101
    /**
102
     *
103
     * @param mixed $offset
104
     * @return bool
105
     */
106
    public function offsetExists(mixed $offset): bool
107
    {
108
        return isset($this->data[$offset]);
109
    }
110
111
    /**
112
     *
113
     * @param mixed $offset
114
     * @return mixed
115
     */
116
    public function offsetGet(mixed $offset): mixed
117
    {
118
        return isset($this->data[$offset])
119
                ? $this->data[$offset]
120
                : null;
121
    }
122
123
    /**
124
     *
125
     * @param mixed $offset
126
     * @param mixed $value
127
     * @return void
128
     */
129
    public function offsetSet(mixed $offset, mixed $value): void
130
    {
131
        $this->data[$offset] = $value;
132
    }
133
134
    /**
135
     *
136
     * @param mixed $offset
137
     * @return void
138
     */
139
    public function offsetUnset(mixed $offset): void
140
    {
141
        unset($this->data[$offset]);
142
    }
143
}
144