MetadataFactoryFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
dl 0
loc 29
ccs 11
cts 11
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A createAnnotationMetadataDriver() 0 10 1
A createYmlMetadataFactory() 0 3 1
A createYmlMetadataDriver() 0 3 1
A createAnnotationMetadataFactory() 0 5 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