LampagerArrayProcessor::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
ccs 1
cts 1
cp 1
crap 1
1
<?php
2
3
App::uses('Model', 'Model');
4
App::uses('LampagerColumnAccess', 'Lampager.Model');
5
6
use Lampager\ArrayProcessor;
7
use Lampager\Query;
8
use Lampager\Query\Order;
9
10
class LampagerArrayProcessor extends ArrayProcessor
11
{
12
    /** @var Model */
13
    protected $model;
14
15
    /** @var LampagerColumnAccess */
16
    protected $access;
17
18
    /**
19
     * @return static
20
     */
21
    public static function create(Model $model)
22
    {
23 32
        return new static($model);
24
    }
25 32
26
    /**
27
     * @param Model $model Model.
28
     */
29
    public function __construct(Model $model)
30
    {
31 32
        $this->model = $model;
32
        $this->access = new LampagerColumnAccess($model);
33 32
    }
34 32
35 32
    /**
36
     * {@inheritdoc}
37
     */
38
    protected function field($row, $column)
39
    {
40 32
        return $this->access->get($row, $column);
41
    }
42 32
43
    /**
44
     * {@inheritdoc}
45
     */
46
    protected function makeCursor(Query $query, $row)
47
    {
48 32
        return array_replace_recursive(
49
            ...array_map(
50 32
                function ($column) use ($row) {
51 32
                    return $this->access->with($column, $this->field($row, $column));
52 32
                },
53 32
                array_intersect(
54 32
                    array_keys(
55 32
                        iterator_to_array($this->access->iterate($row))
56 32
                    ),
57 32
                    array_map(
58
                        static function (Order $order) {
59 32
                            return $order->column();
60 32
                        },
61 32
                        $query->orders()
62 32
                    )
63
                )
64
            )
65
        );
66
    }
67
}
68