Completed
Push — master ( 12f48c...b47ac0 )
by Gaetano
06:59
created

ChainResolver::isReference()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 3
eloc 5
nc 3
nop 1
1
<?php
2
3
namespace Kaliop\eZMigrationBundle\Core\ReferenceResolver;
4
5
use Kaliop\eZMigrationBundle\API\ReferenceResolverInterface;
6
7
class ChainResolver implements ReferenceResolverInterface
8
{
9
    /** @var ReferenceResolverInterface[] $resolvers */
10
    protected $resolvers = array();
11
12
    /**
13
     * ChainResolver constructor.
14
     * @param ReferenceResolverInterface[] $resolvers
15
     */
16
    public function __construct(array $resolvers)
17
    {
18
        $this->resolvers = $resolvers;
19
    }
20
21
    /**
22
     * @param string $stringIdentifier
23
     * @return bool
24
     */
25
    public function isReference($stringIdentifier)
26
    {
27
        foreach ($this->resolvers as $resolver) {
28
            if ($resolver->isReference($stringIdentifier)) {
29
                return true;
30
            }
31
        }
32
33
        return false;
34
    }
35
36
    /**
37
     * @param string $stringIdentifier
38
     * @return mixed
39
     */
40
    public function getReferenceValue($stringIdentifier)
41
    {
42
        foreach ($this->resolvers as $resolver) {
43
            if ($resolver->isReference($stringIdentifier)) {
44
                return $resolver->getReferenceValue($stringIdentifier);
45
            }
46
        }
47
48
        throw \Exception("Could not resolve reference with identifier: '$stringIdentifier'");
49
    }
50
}