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

OrderList::__invoke()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
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