Passed
Push — master ( 9b561d...08d227 )
by y
01:25
created

Column::__call()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Helix\DB;
4
5
use Helix\DB;
6
use Helix\DB\SQL\AggregateTrait;
7
use Helix\DB\SQL\ComparisonTrait;
8
use Helix\DB\SQL\DateTimeTrait;
9
use Helix\DB\SQL\ExpressionInterface;
10
use Helix\DB\SQL\NumericTrait;
11
use Helix\DB\SQL\TextTrait;
12
13
/**
14
 * Immutable column expression. Can produce all available expressions.
15
 *
16
 * @immutable
17
 */
18
class Column implements ExpressionInterface {
19
20
    use AggregateTrait;
21
    use ComparisonTrait;
22
    use DateTimeTrait;
23
    use NumericTrait;
24
    use TextTrait;
25
26
    /**
27
     * @var string
28
     */
29
    protected $name;
30
31
    /**
32
     * @var string
33
     */
34
    protected $qualifier;
35
36
    /**
37
     * @param DB $db
38
     * @param string $name
39
     * @param string $qualifier
40
     */
41
    public function __construct (DB $db, string $name, string $qualifier = '') {
42
        $this->db = $db;
43
        $this->name = $name;
44
        $this->qualifier = $qualifier;
45
    }
46
47
    /**
48
     * Returns the qualified name.
49
     *
50
     * @return string
51
     */
52
    public function __toString (): string {
53
        if (strlen($this->qualifier)) {
54
            return "{$this->qualifier}.{$this->name}";
55
        }
56
        return $this->name;
57
    }
58
59
    /**
60
     * @return string
61
     */
62
    final public function getName (): string {
63
        return $this->name;
64
    }
65
66
    /**
67
     * @return string
68
     */
69
    final public function getQualifier (): string {
70
        return $this->qualifier;
71
    }
72
73
    /**
74
     * @param string $name
75
     * @return $this
76
     */
77
    public function setName (string $name) {
78
        $clone = clone $this;
79
        $clone->name = $name;
80
        return $clone;
81
    }
82
83
    /**
84
     * @param string $qualifier
85
     * @return $this
86
     */
87
    public function setQualifier (string $qualifier) {
88
        $clone = clone $this;
89
        $clone->qualifier = $qualifier;
90
        return $clone;
91
    }
92
}