ZipMutator::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 0
loc 17
ccs 9
cts 9
cp 1
rs 9.4285
cc 3
eloc 9
nc 3
nop 2
crap 3
1
<?php
2
3
namespace Underscore\Mutator;
4
5
use Underscore\Collection;
6
use Underscore\Mutator;
7
8
class ZipMutator extends Mutator
9
{
10
    /**
11
     * Combines current collection values with given keys to produce new collection
12
     *
13
     * @param Collection $collection
14
     * @param mixed[]    $keys
15
     * @return Collection
16
     * @throws \LogicException
17
     */
18 2
    public function __invoke($collection, $keys)
19
    {
20 2
        $values = call_user_func(new ValuesMutator, $collection)->toArray();
21 2
        $keys = call_user_func(new ValuesMutator, new Collection($keys))->toArray();
22
23 2
        if (count($values) !== count($keys)) {
24 1
            throw new \LogicException('Keys and values count must match');
25
        }
26
27 2
        $newCollection = [];
28
29 2
        foreach ($values as $index => $value) {
30 1
            $newCollection[$keys[$index]] = $value;
31
        }
32
33 2
        return $this->copyCollectionWith($collection, $newCollection);
34
    }
35
}
36