Passed
Pull Request — 5.1 (#187)
by
unknown
03:11
created

InheritanceReferencePropertyDescriptor   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 8
c 0
b 0
f 0
dl 0
loc 30
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getNonScalarReferencedPropertyDescriptor() 0 6 2
A getJsonSerializeCode() 0 3 1
A __construct() 0 9 1
1
<?php
2
3
4
namespace TheCodingMachine\TDBM\Utils;
5
6
use Doctrine\DBAL\Schema\Column;
7
use Doctrine\DBAL\Schema\Table;
8
use TheCodingMachine\TDBM\Utils\Annotation\AnnotationParser;
9
10
/**
11
 * This class represents a reference to a AbstractBeanPropertyDescriptor used in an inheritance schema
12
 */
13
class InheritanceReferencePropertyDescriptor extends ScalarBeanPropertyDescriptor
14
{
15
    /** @var AbstractBeanPropertyDescriptor */
16
    private $referencedPropertyDescriptor;
17
18
    public function __construct(
19
        Table $table,
20
        Column $column,
21
        NamingStrategyInterface $namingStrategy,
22
        AnnotationParser $annotationParser,
23
        AbstractBeanPropertyDescriptor $referencedPropertyDescriptor
24
    ) {
25
        parent::__construct($table, $column, $namingStrategy, $annotationParser);
26
        $this->referencedPropertyDescriptor = $referencedPropertyDescriptor;
27
    }
28
29
    /**
30
     * @return ScalarBeanPropertyDescriptor|ObjectBeanPropertyDescriptor
31
     */
32
    public function getNonScalarReferencedPropertyDescriptor(): AbstractBeanPropertyDescriptor
33
    {
34
        if ($this->referencedPropertyDescriptor instanceof InheritanceReferencePropertyDescriptor) {
35
            return $this->referencedPropertyDescriptor->getNonScalarReferencedPropertyDescriptor();
36
        }
37
        return $this->referencedPropertyDescriptor;
38
    }
39
40
    public function getJsonSerializeCode(): string
41
    {
42
        return $this->getNonScalarReferencedPropertyDescriptor()->getJsonSerializeCode();
43
    }
44
}
45