Completed
Push — location_references ( 47d67d )
by
unknown
13:55
created

LocationConfigResolver   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 3

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A getLocation() 0 4 1
A getLocationReference() 0 10 1
A getReference() 0 9 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace eZ\Publish\Core\LocationReference\ConfigResolver;
6
7
use eZ\Publish\Core\LocationReference\LocationReference;
8
use eZ\Publish\Core\LocationReference\LocationReferenceResolverInterface;
9
use eZ\Publish\API\Repository\Values\Content\Location;
10
use eZ\Publish\Core\MVC\ConfigResolverInterface;
11
12
final class LocationConfigResolver implements LocationConfigResolverInterface
13
{
14
    /** @var \eZ\Publish\Core\MVC\ConfigResolverInterface */
15
    private $configResolver;
16
17
    /** @var \eZ\Publish\Core\LocationReference\LocationReferenceResolverInterface */
18
    private $referenceResolver;
19
20
    public function __construct(
21
        ConfigResolverInterface $configResolver,
22
        LocationReferenceResolverInterface $referenceResolver
23
    ) {
24
        $this->configResolver = $configResolver;
25
        $this->referenceResolver = $referenceResolver;
26
    }
27
28
    public function getLocation(string $name, ?string $namespace = null, ?string $scope = null): Location
29
    {
30
        return $this->referenceResolver->resolve($this->getReference($name, $namespace, $scope));
31
    }
32
33
    public function getLocationReference(
34
        string $name,
35
        ?string $namespace = null,
36
        ?string $scope = null
37
    ): LocationReference {
38
        return new LocationReference(
39
            $this->referenceResolver,
40
            $this->getReference($name, $namespace, $scope)
41
        );
42
    }
43
44
    private function getReference(string $name, ?string $namespace, ?string $scope)
45
    {
46
        $reference = $this->configResolver->getParameter($name, $namespace, $scope);
47
        if (is_int($reference)) {
48
            $reference = (string)$reference;
49
        }
50
51
        return $reference;
52
    }
53
}
54