CollectionComparatorTrait::intersectA()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
namespace TRex\Collection;
3
4
trait CollectionComparatorTrait
5
{
6
    /**
7
     * merge
8
     * reindexing of the keys
9
     *
10
     * @param mixed $collection
11
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
12
     */
13 1
    public function merge($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
14
    {
15 1
        return $this->apply('array_merge', $this->prepareCollections(func_get_args()));
16
    }
17
18
    /**
19
     * merge without reindexing and override value with a priority by the left
20
     *
21
     * @param mixed $collection
22
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
23
     */
24 1
    public function mergeA($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
25
    {
26 1
        return $this->apply('array_replace', $this->prepareCollections(func_get_args()));
27
    }
28
29
    /**
30
     * compare the values
31
     * no reindexing
32
     *
33
     * @param mixed $collection
34
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
35
     */
36 1
    public function diff($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
37
    {
38 1
        return $this->apply('array_diff', $this->prepareCollections(func_get_args()));
39
    }
40
41
    /**
42
     * compare the key/value pairs
43
     * no reindexing
44
     *
45
     * @param mixed $collection
46
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
47
     */
48 1
    public function diffA($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
49
    {
50 1
        return $this->apply('array_diff_assoc', $this->prepareCollections(func_get_args()));
51
    }
52
53
    /**
54
     * compare only the keys
55
     * no reindexing
56
     *
57
     * @param mixed $collection
58
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
59
     */
60 1
    public function diffK($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
61
    {
62 1
        return $this->apply('array_diff_key', $this->prepareCollections(func_get_args()));
63
    }
64
65
    /**
66
     * 
67
     *
68
     * @param mixed $collection
69
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
70
     */
71 1
    public function intersect($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
72
    {
73 1
        return $this->apply('array_intersect', $this->prepareCollections(func_get_args()));
74
    }
75
76
    /**
77
     * 
78
     *
79
     * @param mixed $collection
80
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
81
     */
82 1
    public function intersectA($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
83
    {
84 1
        return $this->apply('array_intersect_assoc', $this->prepareCollections(func_get_args()));
85
    }
86
87
    /**
88
     * 
89
     *
90
     * @param mixed $collection
91
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
92
     */
93 1
    public function intersectK($collection /*, ...*/)
0 ignored issues
show
Unused Code introduced by
The parameter $collection is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
94
    {
95 1
        return $this->apply('array_intersect_key', $this->prepareCollections(func_get_args()));
96
    }
97
98
    /**
99
     * Calls a php native function with $collectionList as args.
100
     * Returns a new instance of Collection as result.
101
     *
102
     * @param string $functionName
103
     * @param array $collectionList
104
     * @return self
0 ignored issues
show
Documentation introduced by
Should the return type not be object?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
105
     */
106 8
    private function apply($functionName, array $collectionList)
107
    {
108 8
        return new $this(call_user_func_array($functionName, $this->parseCollectionsListToArray($collectionList)));
109
    }
110
111
    /**
112
     * Transforms a list of mixed in an simple array.
113
     *
114
     * @param array $collectionList
115
     * @return array
116
     */
117 8
    private function parseCollectionsListToArray(array $collectionList)
118
    {
119 8
        return array_map(
120 8
            function ($collection) {
121 8
                return (array)$collection;
122 8
            },
123
            $collectionList
124 8
        );
125
    }
126
127
    /**
128
     * Unshifts $this to $array.
129
     *
130
     * @param array $array
131
     * @return array
132
     */
133 8
    private function prepareCollections(array $array)
134
    {
135 8
        array_unshift($array, $this);
136 8
        return $array;
137
    }
138
}
139