Completed
Push — master ( bc91aa...cd6df5 )
by Eric
115:14 queued 112:36
created

ChainClassMetadataLoader::getMappedClasses()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 8
cts 8
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 3
nop 0
crap 3
1
<?php
2
3
/*
4
 * This file is part of the Ivory Serializer package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\Serializer\Mapping\Loader;
13
14
use Ivory\Serializer\Mapping\ClassMetadataInterface;
15
16
/**
17
 * @author GeLo <[email protected]>
18
 */
19
class ChainClassMetadataLoader implements MappedClassMetadataLoaderInterface
20
{
21
    /**
22
     * @var ClassMetadataLoaderInterface[]
23
     */
24
    private $loaders;
25
26
    /**
27
     * @param ClassMetadataLoaderInterface[] $loaders
28
     */
29 1548
    public function __construct(array $loaders)
30
    {
31 1548
        $this->loaders = $loaders;
32 1548
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37 1252
    public function loadClassMetadata(ClassMetadataInterface $classMetadata)
38
    {
39 1252
        $result = false;
40
41 1252
        foreach ($this->loaders as $loader) {
42 1252
            $result = $loader->loadClassMetadata($classMetadata) || $result;
43 588
        }
44
45 1176
        return $result;
46
    }
47
48
    /**
49
     * {@inheritdoc}
50
     */
51 84
    public function getMappedClasses()
52
    {
53 84
        $classes = [];
54
55 84
        foreach ($this->loaders as $loader) {
56 84
            if ($loader instanceof MappedClassMetadataLoaderInterface) {
57 84
                $classes = array_merge($classes, $loader->getMappedClasses());
58 42
            }
59 42
        }
60
61 84
        return array_unique($classes);
62
    }
63
}
64