Completed
Pull Request — master (#888)
by Robert
03:06
created

DefaultDriverFactory::createDriver()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.686

Importance

Changes 0
Metric Value
dl 0
loc 19
ccs 4
cts 9
cp 0.4444
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 12
nc 2
nop 3
crap 2.686
1
<?php
2
3
namespace JMS\Serializer\Builder;
4
5
use Doctrine\Common\Annotations\Reader;
6
use JMS\Serializer\Metadata\Driver\AnnotationDriver;
7
use JMS\Serializer\Metadata\Driver\XmlDriver;
8
use JMS\Serializer\Metadata\Driver\YamlDriver;
9
use JMS\Serializer\Metadata\ClassMetadataUpdaterInterface;
10
use Metadata\Driver\DriverChain;
11
use Metadata\Driver\FileLocator;
12
13
class DefaultDriverFactory implements DriverFactoryInterface
14
{
15 30
    public function createDriver(
16
        array $metadataDirs,
17
        Reader $annotationReader,
18
        ClassMetadataUpdaterInterface $propertyUpdater = null
19
    )
20
    {
21 30
        $annotationDriver = new AnnotationDriver($annotationReader, $propertyUpdater);
22 30
        if (empty($metadataDirs)) {
23 30
            return $annotationDriver;
24
        }
25
26
        $fileLocator = new FileLocator($metadataDirs);
27
28
        return new DriverChain(array(
29
            new YamlDriver($fileLocator, $propertyUpdater),
30
            new XmlDriver($fileLocator, $propertyUpdater),
31
            $annotationDriver,
32
        ));
33
    }
34
}
35