BasicObjectDataRepository::setClassName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\SkeletonMapper\DataRepository;
6
7
use Doctrine\SkeletonMapper\ObjectManagerInterface;
8
use RuntimeException;
9
use function array_combine;
10
use function is_array;
11
12
abstract class BasicObjectDataRepository extends ObjectDataRepository
13
{
14
    /** @var ObjectManagerInterface */
15
    protected $objectManager;
16
17
    /** @var string */
18
    protected $className;
19
20 33
    public function __construct(ObjectManagerInterface $objectManager, string $className)
21
    {
22 33
        $this->objectManager = $objectManager;
23 33
        $this->className     = $className;
24 33
    }
25
26 20
    public function getClassName() : string
27
    {
28 20
        return $this->className;
29
    }
30
31
    public function setClassName(string $className) : void
32
    {
33
        $this->className = $className;
34
    }
35
36
    /**
37
     * @param mixed $id
38
     *
39
     * @return mixed[]
40
     */
41 19
    public function find($id) : ?array
42
    {
43 19
        $identifier = $this->getIdentifier();
44
45 19
        $identifierValues = is_array($id) ? $id : [$id];
46
47 19
        $criteria = array_combine($identifier, $identifierValues);
48
49 19
        if ($criteria === false) {
50
            throw new RuntimeException('array_combine failed. Make sure you passed a value for each identifier.');
51
        }
52
53 19
        return $this->findOneBy($criteria);
54
    }
55
56
    /**
57
     * @return mixed[]
58
     */
59 19
    protected function getIdentifier() : array
60
    {
61 19
        return $this->objectManager
62 19
            ->getClassMetadata($this->getClassName())
63 19
            ->getIdentifier();
64
    }
65
66
    /**
67
     * @param object $object
68
     *
69
     * @return mixed[]
70
     */
71
    protected function getObjectIdentifier($object) : array
72
    {
73
        return $this->objectManager
74
            ->getRepository($this->getClassName())
75
            ->getObjectIdentifier($object);
76
    }
77
}
78