MongoDbSlumbererImpl   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 61.11%

Importance

Changes 0
Metric Value
dl 0
loc 60
c 0
b 0
f 0
wmc 5
lcom 1
cbo 5
ccs 11
cts 18
cp 0.6111
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A getStorage() 0 4 1
A slumber() 0 25 3
1
<?php
2
/**
3
 * File was created 14.02.2016 00:04
4
 */
5
6
namespace PeekAndPoke\Component\Slumber\Data\MongoDb;
7
8
use PeekAndPoke\Component\Slumber\Core\Codec\GenericSlumberer;
9
use PeekAndPoke\Component\Slumber\Data\Storage;
10
use Psr\Container\ContainerInterface;
11
12
/**
13
 * @author Karsten J. Gerber <[email protected]>
14
 */
15
class MongoDbSlumbererImpl extends GenericSlumberer implements MongoDbSlumberer
16
{
17
    /** @var Storage */
18
    protected $storage;
19
    /** @var ContainerInterface */
20
    private $serviceProvider;
21
22
    /**
23
     * @param MongoDbEntityConfigReader $lookUp
24
     * @param Storage                   $storage
25
     * @param ContainerInterface        $serviceProvider
26
     */
27
    public function __construct(MongoDbEntityConfigReader $lookUp, Storage $storage, ContainerInterface $serviceProvider)
28
    {
29
        parent::__construct($lookUp);
30
31
        $this->storage         = $storage;
32
        $this->serviceProvider = $serviceProvider;
33
    }
34
35
    /**
36
     * @return Storage
37
     */
38
    public function getStorage()
39
    {
40
        return $this->storage;
41
    }
42
43
    /**
44
     * @param mixed $subject
45
     *
46
     * @return array|mixed|null
47
     */
48 28
    public function slumber($subject)
49
    {
50
        ////  do the pre-create property visits  ///////////////////////////////////////////////////////////////////////
51
52
        /** @var MongoDbEntityConfigReader $lookUp */
53 28
        $lookUp = $this->entityConfigLookUp;
54
55 28
        $reflect = new \ReflectionClass($subject);
56 28
        $config  = $lookUp->getEntityConfig($reflect);
57 28
        $visits  = $config->getPreSaveVisits();
58
59 28
        foreach ($visits as $visit) {
60
61 28
            $property = $reflect->getProperty($visit->propertyName);
62 28
            $property->setAccessible(true);
63
64 28
            foreach ($visit->markers as $marker) {
65 28
                $marker->onPreSave($this->serviceProvider, $subject, $property);
66
            }
67
        }
68
69
        ////  do the real slumbering  //////////////////////////////////////////////////////////////////////////////////
70
71 28
        return parent::slumber($subject);
72
    }
73
74
}
75