Completed
Pull Request — master (#5669)
by Jeremy
70:55 queued 61:56
created

MappingVisitor::walkCompositeExpression()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 9
ccs 0
cts 0
cp 0
rs 9.6666
cc 2
eloc 5
nc 2
nop 1
crap 6
1
<?php
2
3
4
namespace Doctrine\ORM\Persisters\Collection\Expr;
5
6
7
use Doctrine\Common\Collections\Expr\Comparison;
8
use Doctrine\Common\Collections\Expr\CompositeExpression;
9
use Doctrine\Common\Collections\Expr\ExpressionVisitor;
10
use Doctrine\Common\Collections\Expr\Value;
11
use Doctrine\DBAL\Platforms\AbstractPlatform;
12
use Doctrine\ORM\Mapping\ClassMetadata;
13
use Doctrine\ORM\Mapping\QuoteStrategy;
14
15
class MappingVisitor extends ExpressionVisitor
16
{
17
    /** @var  QuoteStrategy */
18
    private $quoteStrategy;
19
    /** @var  ClassMetadata */
20
    private $metadata;
21
    /** @var  AbstractPlatform */
22
    private $platform;
23
24
    /**
25
     * MappingVisitor constructor.
26
     * @param QuoteStrategy $quoteStrategy
27
     * @param ClassMetadata $metadata
28
     * @param AbstractPlatform $platform
29
     */
30 12
    public function __construct(QuoteStrategy $quoteStrategy, ClassMetadata $metadata, AbstractPlatform $platform)
31
    {
32 12
        $this->quoteStrategy = $quoteStrategy;
33 12
        $this->metadata = $metadata;
34 12
        $this->platform = $platform;
35 12
    }
36
37
38
    /**
39
     * Converts a comparison expression into the target query language output.
40
     *
41
     * @param Comparison $comparison
42
     *
43
     * @return mixed
44
     */
45 12
    public function walkComparison(Comparison $comparison)
46
    {
47 12
        return new Comparison(
48 12
            $this->quoteStrategy->getColumnName($comparison->getField(), $this->metadata, $this->platform),
49 12
            $comparison->getOperator(),
50 12
            $comparison->getValue()
51
        );
52
    }
53
54
    /**
55
     * Converts a value expression into the target query language part.
56
     *
57
     * @param Value $value
58
     *
59
     * @return mixed
60
     */
61
    public function walkValue(Value $value)
62
    {
63
        return $value->getValue();
64
    }
65
66
    /**
67
     * Converts a composite expression into the target query language output.
68
     *
69
     * @param CompositeExpression $expr
70
     *
71
     * @return mixed
72
     */
73
    public function walkCompositeExpression(CompositeExpression $expr)
74
    {
75
        $expressions = [];
76
        foreach($expr->getExpressionList() as $expression) {
77
            $expressions[] = $this->dispatch($expression);
78
        }
79
80
        return new CompositeExpression($expr->getType(), $expressions);
81
    }
82
}