Passed
Push — feature/cleanup ( f97f45 )
by Fike
05:53
created

AccessorBuilder   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 70%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 6
dl 0
loc 27
ccs 7
cts 10
cp 0.7
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setMetadataStorage() 0 5 1
A build() 0 9 2
1
<?php
2
3
namespace AmaTeam\TreeAccess;
4
5
use AmaTeam\TreeAccess\API\Metadata\StorageInterface;
6
use AmaTeam\TreeAccess\Metadata\Manager;
7
use AmaTeam\TreeAccess\Metadata\RuntimeStorage;
8
use AmaTeam\TreeAccess\Type\ArrayAccessor;
9
use AmaTeam\TreeAccess\Type\ObjectAccessor;
10
use AmaTeam\TreeAccess\Type\Registry;
11
12
class AccessorBuilder
13
{
14
    /**
15
     * @var StorageInterface
16
     */
17
    private $metadataStorage;
18
19
    /**
20
     * @param StorageInterface $metadataStorage
21
     * @return $this
22
     */
23
    public function setMetadataStorage($metadataStorage)
24
    {
25
        $this->metadataStorage = $metadataStorage;
26
        return $this;
27
    }
28
29 18
    public function build()
30
    {
31 18
        $storage = $this->metadataStorage ?: new RuntimeStorage();
32 18
        $manager = new Manager($storage);
33 18
        $registry = (new Registry())
34 18
            ->registerAccessor('array', new ArrayAccessor())
35 18
            ->registerAccessor('object', new ObjectAccessor($manager));
36 18
        return new Accessor($registry);
37
    }
38
}
39