Completed
Push — master ( d83c02...fa2ec8 )
by Markus
02:52
created

StringOrFileList::offsetSet()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 1
nc 1
nop 2
1
<?php
2
namespace Mathielen\ImportEngineBundle\DependencyInjection;
3
4
use Symfony\Component\Finder\Iterator\RecursiveDirectoryIterator;
5
6
class StringOrFileList extends \ArrayObject
7
{
8
9
    public function __construct(array $listOrStringsOrFiles)
10
    {
11
        foreach ($listOrStringsOrFiles as $k=>&$v) {
12
            if (is_dir($v)) {
13
                $iterator = new RecursiveDirectoryIterator($v, \FilesystemIterator::KEY_AS_PATHNAME);
14
                $iterator = new \RecursiveIteratorIterator($iterator);
15
16
                /** @var \Symfony\Component\Finder\SplFileInfo $file */
17
                foreach ($iterator as $file) {
18
                    if (is_file($file)) {
19
                        $listOrStringsOrFiles[$file->getRelativePathname()] = $file;
20
                    }
21
                }
22
23
                unset($listOrStringsOrFiles[$k]);
24
            } elseif (is_file($v)) {
25
                $v = new \SplFileInfo($v);
26
            }
27
        }
28
29
        parent::__construct($listOrStringsOrFiles);
30
    }
31
32
    public function offsetGet($offset)
33
    {
34
        $v = parent::offsetGet($offset);
35
36
        if ($v instanceof \SplFileInfo) {
37
            return file_get_contents($v);
38
        }
39
40
        return $v;
41
    }
42
43
}
44