ArrayLoader::getData()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * Platine ETL
5
 *
6
 * Platine ETL is a library to Extract-Transform-Load Data from various sources
7
 *
8
 * This content is released under the MIT License (MIT)
9
 *
10
 * Copyright (c) 2020 Platine ETL
11
 * Copyright (c) 2019 Benoit POLASZEK
12
 *
13
 * Permission is hereby granted, free of charge, to any person obtaining a copy
14
 * of this software and associated documentation files (the "Software"), to deal
15
 * in the Software without restriction, including without limitation the rights
16
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
 * copies of the Software, and to permit persons to whom the Software is
18
 * furnished to do so, subject to the following conditions:
19
 *
20
 * The above copyright notice and this permission notice shall be included in all
21
 * copies or substantial portions of the Software.
22
 *
23
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
 * SOFTWARE.
30
 */
31
32
declare(strict_types=1);
33
34
namespace Platine\Etl\Loader;
35
36
use Generator;
37
use Platine\Etl\Etl;
38
39
/**
40
 * @class ArrayLoader
41
 * @package Platine\Etl\Loader
42
 */
43
class ArrayLoader implements LoaderInterface
44
{
45
    /**
46
     * The data
47
     * @var array<mixed>
48
     */
49
    protected array $data = [];
50
51
    /**
52
     * Whether to preserve array keys
53
     * @var bool
54
     */
55
    protected bool $preserveKeys = true;
56
57
    /**
58
     * Create new instance
59
     * @param bool $preserveKeys
60
     * @param array<mixed> $data
61
     */
62
    public function __construct(bool $preserveKeys = true, array &$data = [])
63
    {
64
        $this->data = &$data;
65
        $this->preserveKeys = $preserveKeys;
66
    }
67
68
    /**
69
     * {@inheritodc}
70
     */
71
    public function init(array $options = []): void
72
    {
73
        if (isset($options['preserve_keys']) && is_bool($options['preserve_keys'])) {
74
            $this->preserveKeys = $options['preserve_keys'];
75
        }
76
    }
77
78
79
    /**
80
     * {@inheritodc}
81
     */
82
    public function load(Generator $items, int|string $key, Etl $etl): void
83
    {
84
        foreach ($items as $value) {
85
            if ($this->preserveKeys) {
86
                $this->data[$key] = $value;
87
            } else {
88
                $this->data[] = $value;
89
            }
90
        }
91
    }
92
93
    /**
94
     * {@inheritodc}
95
     */
96
    public function commit(bool $partial): void
97
    {
98
    }
99
100
    /**
101
     * {@inheritodc}
102
     */
103
    public function rollback(): void
104
    {
105
    }
106
107
    /**
108
     * Return the data
109
     * @return array<mixed>
110
     */
111
    public function getData(): array
112
    {
113
        return $this->data;
114
    }
115
}
116