-
Notifications
You must be signed in to change notification settings - Fork 1
/
RecipeHandler.php
41 lines (37 loc) · 913 Bytes
/
RecipeHandler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
namespace Reasno\Helpers;
class RecipeHandler{
private function pipe(callable ...$fns){
return function($init) use ($fns){
return array_reduce($fns, function($acc, $fn){
return call_user_func($fn, $acc);
}, $init);
};
}
private function map(callable ...$fns){
return function($init) use ($fns){
if ($init instanceof Traversable){
$first = iterator_to_array($init);
} else {
$first = (array)$init;
}
return array_reduce($fns, function($acc, $fn){
return array_map($fn , $acc);
}, $first);
};
}
private function any(callable ...$fns){
return function($init) use ($fns){
return array_reduce($fns, function($acc, $fn){
return $acc || $fn($acc);
}, $init);
};
}
private function all(callable ...$fns){
return function($init) use ($fns){
return array_reduce($fns, function($acc, $fn){
return $acc && $fn($acc);
}, $init);
};
}
}