MultiColumnLink::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 10
cc 1
nc 1
nop 3
crap 1
1
<?php
2
3
namespace kalanis\kw_table\core\Table\Columns;
4
5
6
use kalanis\kw_connect\core\Interfaces\IRow;
7
8
9
/**
10
 * Class MultiColumnLink
11
 * @package kalanis\kw_table\core\Table\Columns
12
 * Process multiple columns
13
 */
14
class MultiColumnLink extends AColumn
15
{
16
    use TEscapedValue;
17
18
    /** @var callable */
19
    protected $callback;
20
    /** @var AColumn[] */
21
    protected array $params;
22
23
    /**
24
     * @param string     $sourceName  basic column (for sorting or filtering)
25
     * @param AColumn[]  $params      another data columns
26
     * @param callable   $callback    function, which will process that
27
     */
28 1
    public function __construct(string $sourceName, array $params, $callback)
29
    {
30 1
        $this->sourceName = $sourceName;
31 1
        $this->callback = $callback;
32 1
        $this->params = $params;
33 1
    }
34
35 1
    public function getValue(IRow $source)
36
    {
37 1
        $return = [];
38 1
        $return[] = parent::getValue($source);
39 1
        foreach ($this->params AS $param) {
40 1
            $return[] = $param->getValue($source);
41
        }
42 1
        return call_user_func($this->callback, $return);
43
    }
44
45 1
    public function canOrder(): bool
46
    {
47 1
        return false;
48
    }
49
}
50