ToOneAssociationLoadingStrategy   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 38
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A load() 0 10 1
A supports() 0 5 3
1
<?php
2
3
namespace Malef\Associate\DoctrineOrm\Loader\LoadingStrategy;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use Malef\Associate\DoctrineOrm\Collector\AssociationCollector;
7
use Malef\Associate\DoctrineOrm\Loader\UninitializedProxiesLoader;
8
use Malef\Associate\DoctrineOrm\Metadata\AssociationMetadataAdapter;
9
10
class ToOneAssociationLoadingStrategy implements AssociationLoadingStrategyInterface
11
{
12
    /**
13
     * @var AssociationCollector
14
     */
15
    protected $associationCollector;
16
17
    /**
18
     * @var UninitializedProxiesLoader
19
     */
20
    protected $uninitializedProxiesLoader;
21
22
    public function __construct(
23
        AssociationCollector $associationCollector,
24
        UninitializedProxiesLoader $uninitializedProxiesLoader
25
    ) {
26
        $this->associationCollector = $associationCollector;
27
        $this->uninitializedProxiesLoader = $uninitializedProxiesLoader;
28
    }
29
30
    public function supports(AssociationMetadataAdapter $associationMetadataAdapter): bool
31
    {
32
        return
33
            $associationMetadataAdapter->isManyToOne()
34
            || ($associationMetadataAdapter->isOneToOne() && $associationMetadataAdapter->isOwningSide())
35
        ;
36
    }
37
38
    public function load(ArrayCollection $sourceEntities, AssociationMetadataAdapter $associationMetadataAdapter): void
39
    {
40
        $targetEntities = $this->associationCollector->collect(
41
            $sourceEntities,
42
            $associationMetadataAdapter
43
        );
44
45
        $this->uninitializedProxiesLoader->load(
46
            $targetEntities,
47
            $associationMetadataAdapter->getTargetClassMetadataAdapter()
48
        );
49
    }
50
}
51