Completed
Branch 2.0 (acba87)
by Vermeulen
02:20
created

OrderList   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 3 1
A generate() 0 13 3
1
<?php
2
3
namespace BfwSql\Queries\Parts;
4
5
class OrderList extends AbstractList
6
{
7
    /**
8
     * {@inheritdoc}
9
     */
10
    protected $partPrefix = 'ORDER BY';
11
    
12
    /**
13
     * {@inheritdoc}
14
     */
15
    protected $separator = ',';
16
    
17
    /**
18
     * Magic method __invoke, used when the user call object like a function
19
     * @link http://php.net/manual/en/language.oop5.magic.php#object.invoke
20
     * 
21
     * @param string $expr The expression to use into the order
22
     * @param string $sort The sort order : ASC or DESC
23
     * 
24
     * @return void
25
     */
26
    public function __invoke(string $expr, $sort = 'ASC')
27
    {
28
        $this->list[] = new Order($expr, $sort);
29
    }
30
    
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function generate(): string
35
    {
36
        $sqlPart = '';
37
        
38
        foreach ($this->list as $index => $order) {
39
            if ($index > 0) {
40
                $sqlPart .= $this->separator;
41
            }
42
            
43
            $sqlPart .= $order->generate();
44
        }
45
        
46
        return $sqlPart;
47
    }
48
}
49