ProxyDriver::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 1
1
<?php
2
3
/**
4
 * Copyright 2015 Fabian Grutschus. All rights reserved.
5
 *
6
 * Redistribution and use in source and binary forms, with or without modification,
7
 * are permitted provided that the following conditions are met:
8
 *
9
 * 1. Redistributions of source code must retain the above copyright notice, this
10
 *   list of conditions and the following disclaimer.
11
 *
12
 * 2. Redistributions in binary form must reproduce the above copyright notice,
13
 *   this list of conditions and the following disclaimer in the documentation
14
 *   and/or other materials provided with the distribution.
15
 *
16
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
 *
27
 * The views and conclusions contained in the software and documentation are those
28
 * of the authors and should not be interpreted as representing official policies,
29
 * either expressed or implied, of the copyright holders.
30
 *
31
 * @author    Fabian Grutschus <[email protected]>
32
 * @copyright 2015 Fabian Grutschus. All rights reserved.
33
 * @license   BSD-2-Clause
34
 */
35
36
namespace Fabiang\DoctrineDynamic;
37
38
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
39
use Doctrine\Persistence\Mapping\ClassMetadata;
40
use Fabiang\DoctrineDynamic\Mapper\Mapper;
41
42
class ProxyDriver implements MappingDriver
43
{
44
    /**
45
     * @var MappingDriver
46
     */
47
    private $originalDriver;
48
49
    /**
50
     * @var Configuration
51
     */
52
    private $configuration;
53
54
    /**
55
     * @var MetadataMapper
56
     */
57
    private $mapper;
58
59 2
    public function __construct(MappingDriver $originalDriver, Configuration $configuration, Mapper $mapper)
60
    {
61 2
        $this->originalDriver = $originalDriver;
62 2
        $this->configuration  = $configuration;
63 2
        $this->mapper         = $mapper;
0 ignored issues
show
Documentation Bug introduced by
It seems like $mapper of type object<Fabiang\DoctrineDynamic\Mapper\Mapper> is incompatible with the declared type object<Fabiang\DoctrineDynamic\MetadataMapper> of property $mapper.

Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.

Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..

Loading history...
64 2
    }
65
66 1
    public function loadMetadataForClass($className, ClassMetadata $metadata)
67
    {
68 1
        $return = $this->originalDriver->loadMetadataForClass($className, $metadata);
0 ignored issues
show
Bug introduced by
Are you sure the assignment to $return is correct as $this->originalDriver->l...($className, $metadata) (which targets Doctrine\Persistence\Map...:loadMetadataForClass()) seems to always return null.

This check looks for function or method calls that always return null and whose return value is assigned to a variable.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
$object = $a->getObject();

The method getObject() can return nothing but null, so it makes no sense to assign that value to a variable.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
69
70 1
        if ($this->configuration->has($className)) {
71 1
            $configuration = $this->configuration->get($className);
72 1
            $this->mapper->map($metadata, $configuration);
73 1
        }
74
75 1
        return $return;
76
    }
77
78 1
    public function getAllClassNames()
79
    {
80 1
        return $this->originalDriver->getAllClassNames();
81
    }
82
83 1
    public function isTransient($className)
84
    {
85 1
        return $this->originalDriver->isTransient($className);
86
    }
87
88 1
    public function getOriginalDriver()
89
    {
90 1
        return $this->originalDriver;
91
    }
92
}
93