File tree Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Expand file tree Collapse file tree 2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change @@ -16,3 +16,17 @@ function pipe($payload, callable ...$stages)
16
16
17
17
return $ payload ;
18
18
}
19
+
20
+ /**
21
+ * @param $value
22
+ * @param callable ...$jobs
23
+ * @return mixed returns the value
24
+ */
25
+ function with (&$ value , callable ...$ jobs )
26
+ {
27
+ foreach ($ jobs as $ job ) {
28
+ $ job ($ value );
29
+ }
30
+
31
+ return $ value ;
32
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+ declare (strict_types=1 );
3
+
4
+ namespace BrenoRoosevelt \Tests ;
5
+
6
+ use PHPUnit \Framework \TestCase ;
7
+ use function BrenoRoosevelt \pipe ;
8
+ use function BrenoRoosevelt \with ;
9
+
10
+ class PipeTest extends TestCase
11
+ {
12
+ public function testPipe ()
13
+ {
14
+ $ payload = new \stdClass ();
15
+ $ payload ->value = 1 ;
16
+ $ result = pipe (
17
+ $ payload ,
18
+ function ($ p ) {
19
+ $ p ->value += 1 ;
20
+ return $ p ;
21
+ },
22
+ function ($ p ) {
23
+ $ p ->value *= 4 ;
24
+ return $ p ;
25
+ },
26
+ function ($ p ) {
27
+ $ p ->value -= 3 ;
28
+ return $ p ;
29
+ }
30
+ );
31
+
32
+ $ this ->assertSame ($ payload , $ result );
33
+ $ this ->assertEquals (5 , $ result ->value );
34
+ }
35
+
36
+ public function testWith ()
37
+ {
38
+ $ payload = new \stdClass ();
39
+ $ payload ->value = 1 ;
40
+ $ result = with (
41
+ $ payload ,
42
+ fn ($ p ) => $ p ->value += 1 ,
43
+ fn ($ p ) => $ p ->value *= 4 ,
44
+ fn ($ p ) => $ p ->value -= 3
45
+ );
46
+
47
+ $ this ->assertSame ($ payload , $ result );
48
+ $ this ->assertEquals (5 , $ result ->value );
49
+ }
50
+ }
You can’t perform that action at this time.
0 commit comments