Passed
Push — master ( 9b9be7...468f99 )
by Dan
04:07 queued 10s
created

Loader::createDataLoader()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Knp\FriendlyContexts\Alice\Fixtures\Alice3;
4
5
use Knp\FriendlyContexts\Alice\Fixtures\Loader as LoaderInterface;
6
use Nelmio\Alice\DataLoaderInterface;
7
use Nelmio\Alice\Loader\NativeLoader;
8
9
class Loader extends NativeLoader implements
10
    LoaderInterface
11
{
12
    private $fixtureSet;
13
    private $fixtureData;
14
    private $loader;
15
    private $dataLoader;
16
17
    public function __construct()
18
    {
19
        parent::__construct();
20
21
        $this->loader = $this->createFilesLoader();
22
        $this->dataLoader = $this->createDataLoader();
23
    }
24
25
    public function getCache()
26
    {
27
        $fixtureSet = $this->dataLoader->getLastFixtureSet();
28
        if (null === $fixtureSet) {
29
            return array();
30
        }
31
32
        $cache = array();
33
        $fixtures = $fixtureSet->getFixtures();
34
        foreach ($fixtures as $fixture) {
35
            $spec = array();
36
37
            $properties = $fixture->getSpecs()->getProperties();
38
            foreach ($properties->getIterator() as $property) {
39
                $spec[] = $property->getValue();
40
            }
41
42
            $cache[] = [$spec, $this->fixtureData[$fixture->getId()]];
43
        }
44
45
        return $cache;
46
    }
47
48
    public function clearCache()
49
    {
50
        $this->fixtureSet = null;
51
    }
52
53
    public function load($filename)
54
    {
55
        if ( ! is_array($filename)) {
56
            $filename = array($filename);
57
        }
58
        return $this->loader->loadFiles($filename)->getObjects();
59
    }
60
61
    protected function createDataLoader() : DataLoaderInterface
62
    {
63
        return new DataLoader(
64
            $this->getFixtureBuilder(),
65
            $this->getGenerator()
66
        );
67
    }
68
}
69