Browse Source

Make operation and filter callables take a single array argument

Alexandros Solanos 9 years ago
parent
commit
e3654b30e0
2 changed files with 10 additions and 10 deletions
  1. 2 2
      src/Collection/CollectionTrait.php
  2. 8 8
      tests/TestCase/Collection/CollectionTest.php

+ 2 - 2
src/Collection/CollectionTrait.php

@@ -718,8 +718,8 @@ trait CollectionTrait
                 return $value[$keys[$index]];
             }, $collectionArrays, $collectionArraysKeys, $currentIndexes);
 
-            if ($filter === null || call_user_func_array($filter, $currentCombination)) {
-                $result[] = ($operation === null) ? $currentCombination : call_user_func_array($operation, $currentCombination);
+            if ($filter === null || $filter($currentCombination)) {
+                $result[] = ($operation === null) ? $currentCombination : $operation($currentCombination);
             }
 
             $currentIndexes[$lastIndex]++;

+ 8 - 8
tests/TestCase/Collection/CollectionTest.php

@@ -1805,10 +1805,10 @@ class CollectionTest extends TestCase
 
         $collection = new Collection([[1, 2, 3], ['A', 'B', 'C'], ['a', 'b', 'c']]);
 
-        $result = $collection->cartesianProduct(function ($val1, $val2, $val3) {
-            return [strval($val1) . $val2 . $val3];
-        }, function ($val1, $val2, $val3) {
-            return $val1 >= 2;
+        $result = $collection->cartesianProduct(function ($value) {
+            return [strval($value[0]) . $value[1] . $value[2]];
+        }, function ($value) {
+            return $value[0] >= 2;
         });
 
         $expected = [
@@ -1836,10 +1836,10 @@ class CollectionTest extends TestCase
 
         $collection = new Collection([['1', '2', '3', '4'], ['A', 'B', 'C'], ['name', 'surname', 'telephone']]);
 
-        $result = $collection->cartesianProduct(function ($val1, $val2, $val3) {
-            return [$val1 => [$val2 => $val3]];
-        }, function ($val1, $val2, $val3) {
-            return $val3 !== 'surname';
+        $result = $collection->cartesianProduct(function ($value) {
+            return [$value[0] => [$value[1] => $value[2]]];
+        }, function ($value) {
+            return $value[2] !== 'surname';
         });
 
         $expected = [