Completed
Push — master ( 4ff9cc...589f5d )
by Pavel
07:24
created

CircularReferenceHandler::handle()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
rs 9.4285
cc 3
eloc 9
nc 2
nop 1
1
<?php
2
3
namespace ScayTrase\Api\Cruds\Adaptors\DoctrineOrm;
4
5
use Doctrine\ORM\Mapping\ClassMetadata;
6
use Symfony\Bridge\Doctrine\RegistryInterface;
7
8
final class CircularReferenceHandler
9
{
10
    /** @var  RegistryInterface */
11
    private $registry;
12
13
    /**
14
     * CircularReferenceHandler constructor.
15
     *
16
     * @param RegistryInterface $registry
17
     */
18
    public function __construct(RegistryInterface $registry)
19
    {
20
        $this->registry = $registry;
21
    }
22
23
    public function handle($object)
24
    {
25
        $class = get_class($object);
26
27
        $metadata   = $this->registry
28
            ->getManagerForClass($class)
29
            ->getClassMetadata($class);
30
        $identifier = $metadata->getIdentifierValues($object);
31
32
        if (!$metadata instanceof ClassMetadata || $metadata->isIdentifierComposite) {
33
            return $identifier;
34
        }
35
36
        return array_shift($identifier);
37
    }
38
}
39