Completed
Push — master ( 997f37...b06700 )
by Kirill
08:36
created

FieldFunction   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 4
dl 0
loc 43
ccs 0
cts 16
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A parse() 0 11 1
A getSql() 0 6 1
1
<?php
2
/**
3
 * This file is part of Hydrogen package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
declare(strict_types=1);
9
10
namespace RDS\Hydrogen\Fun;
11
12
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
13
use Doctrine\ORM\Query\AST\Literal;
14
use Doctrine\ORM\Query\Lexer;
15
use Doctrine\ORM\Query\Parser;
16
use Doctrine\ORM\Query\SqlWalker;
17
18
/**
19
 * Class FieldFunction
20
 */
21
class FieldFunction extends FunctionNode
22
{
23
    /**
24
     * @var Literal
25
     */
26
    private $field;
27
28
    /**
29
     * @var Literal
30
     */
31
    private $table;
32
33
    /**
34
     * @var Literal
35
     */
36
    private $alias;
37
38
    /**
39
     * @param Parser $parser
40
     */
41
    public function parse(Parser $parser): void
42
    {
43
        $parser->match(Lexer::T_IDENTIFIER);
44
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
45
        $this->table = $parser->StringPrimary();
46
        $parser->match(Lexer::T_COMMA);
47
        $this->alias = $parser->StringPrimary();
48
        $parser->match(Lexer::T_COMMA);
49
        $this->field = $parser->StringPrimary();
50
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
51
    }
52
53
    /**
54
     * @param SqlWalker $sqlWalker
55
     * @return string
56
     */
57
    public function getSql(SqlWalker $sqlWalker): string
58
    {
59
        $alias = $sqlWalker->getSQLTableAlias($this->table->value, $this->alias->value);
60
61
        return $alias . '.' . $this->field->value;
62
    }
63
}
64