AccessorBuilder::build()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 1
nop 0
dl 0
loc 8
ccs 7
cts 7
cp 1
crap 2
rs 9.4285
c 0
b 0
f 0
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 21
    public function build()
30
    {
31 21
        $storage = $this->metadataStorage ?: new RuntimeStorage();
32 21
        $manager = new Manager($storage);
33 21
        $registry = (new Registry())
34 21
            ->registerAccessor('array', new ArrayAccessor())
35 21
            ->registerAccessor('object', new ObjectAccessor($manager));
36 21
        return new Accessor($registry);
37
    }
38
}
39