createAnnotationMetadataFactory()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 2
cts 2
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Vox\Metadata\Factory;
4
5
use Doctrine\Common\Annotations\AnnotationReader;
6
use Doctrine\Common\Annotations\Reader;
7
use Metadata\Driver\DriverInterface;
8
use Metadata\MetadataFactory;
9
use Vox\Metadata\ClassMetadata;
10
use Vox\Metadata\Driver\AnnotationDriver;
11
use Vox\Metadata\Driver\YmlDriver;
12
13
class MetadataFactoryFactory implements MetadataFactoryFactoryInterface
14
{
15 7
    public function createAnnotationMetadataFactory(
16
        string $metadataClassName = ClassMetadata::class,
17
        Reader $reader = null
18
    ) {
19 7
        return new MetadataFactory($this->createAnnotationMetadataDriver($metadataClassName, $reader));
20
    }
21
    
22 2
    public function createYmlMetadataFactory(string $metadataPath, string $metadataClassName)
23
    {
24 2
        return new MetadataFactory($this->createYmlMetadataDriver($metadataPath, $metadataClassName));
25
    }
26
    
27 7
    private function createAnnotationMetadataDriver(
28
        string $metadataClassName = ClassMetadata::class,
29
        Reader $reader = null
30
    ): DriverInterface {
31 7
        $driver = new AnnotationDriver(
32 7
            $reader ?? new AnnotationReader(),
33 7
            $metadataClassName
34
        );
35
36 7
        return $driver;
37
    }
38
    
39 2
    private function createYmlMetadataDriver(string $metadataPath, string $metadataClassName): DriverInterface
40
    {
41 2
        return new YmlDriver($metadataPath, $metadataClassName);
42
    }
43
}
44