Passed
Pull Request — master (#1494)
by Asmir
02:48
created

NullDriver::loadMetadataForClass()   B

Complexity

Conditions 7
Paths 8

Size

Total Lines 23
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 56

Importance

Changes 0
Metric Value
cc 7
eloc 12
nc 8
nop 1
dl 0
loc 23
ccs 0
cts 0
cp 0
crap 56
rs 8.8333
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace JMS\Serializer\Metadata\Driver;
6
7
use JMS\Serializer\Metadata\ClassMetadata;
8
use JMS\Serializer\Metadata\PropertyMetadata;
9
use JMS\Serializer\Naming\PropertyNamingStrategyInterface;
10
use Metadata\ClassMetadata as BaseClassMetadata;
11
use Metadata\Driver\DriverInterface;
12 1
13
class NullDriver implements DriverInterface
14 1
{
15 1
    /**
16
     * @var PropertyNamingStrategyInterface
17 1
     */
18
    private $namingStrategy;
19
20
    public function __construct(PropertyNamingStrategyInterface $namingStrategy)
21
    {
22
        $this->namingStrategy = $namingStrategy;
23
    }
24
25
    public function loadMetadataForClass(\ReflectionClass $class): ?BaseClassMetadata
26
    {
27
        $classMetadata = new ClassMetadata($name = $class->name);
28
        $fileResource =  $class->getFilename();
29
        if (false !== $fileResource) {
30
            $classMetadata->fileResources[] = $fileResource;
31
        }
32
33
        foreach ($class->getProperties() as $property) {
34
            if ($property->class !== $name || (isset($property->info) && $property->info['class'] !== $name)) {
35
                continue;
36
            }
37
38
            $propertyMetadata = new PropertyMetadata($name, $property->getName());
39
40
            if (!$propertyMetadata->serializedName) {
41
                $propertyMetadata->serializedName = $this->namingStrategy->translateName($propertyMetadata);
42
            }
43
44
            $classMetadata->addPropertyMetadata($propertyMetadata);
45
        }
46
47
        return $classMetadata;
48
    }
49
}
50