File tree 1 file changed +91
-0
lines changed
Zend/tests/arrow_functions
1 file changed +91
-0
lines changed Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ Arrow functions auto-capture variables, by value.
3
+ --FILE--
4
+ <?php
5
+
6
+ $ a = 0 ;
7
+ $ fn = fn () {
8
+ var_dump (isset ($ a ));
9
+ $ a = 1 ;
10
+ var_dump ($ a );
11
+ };
12
+ var_dump ($ a );
13
+ $ fn ();
14
+ var_dump ($ a );
15
+
16
+ $ a = 2 ;
17
+ $ fn = fn () {
18
+ $ a ++;
19
+ var_dump ($ a );
20
+ };
21
+ var_dump ($ a );
22
+ $ fn ();
23
+ var_dump ($ a );
24
+
25
+ $ a = 3 ;
26
+ $ fn = fn () {
27
+ if (false ) $ a = 4 ;
28
+ var_dump ($ a );
29
+ };
30
+ var_dump ($ a );
31
+ $ fn ();
32
+ var_dump ($ a );
33
+
34
+ $ a = 5 ;
35
+ $ fn = fn () {
36
+ var_dump ($ a );
37
+ if (false ) $ a = 6 ;
38
+ };
39
+ var_dump ($ a );
40
+ $ fn ();
41
+ var_dump ($ a );
42
+
43
+ $ a = 7 ;
44
+ $ fn = fn () {
45
+ unset($ a);
46
+ var_dump (isset ($ a ));
47
+ };
48
+ var_dump ($ a );
49
+ $ fn ();
50
+ var_dump ($ a );
51
+
52
+ $ a = 8 ;
53
+ $ fn = fn () {
54
+ $ a = 9 ;
55
+ unset($ a );
56
+ var_dump (isset ($ a ));
57
+ };
58
+ var_dump ($ a );
59
+ $ fn ();
60
+ var_dump ($ a );
61
+
62
+ $ a = 10 ;
63
+ $ fn = fn () { return fn () { var_dump ($ a ); }; };
64
+ var_dump ($ a );
65
+ $ fn ()();
66
+ var_dump ($ a );
67
+
68
+ ?>
69
+ --EXPECT--
70
+ int(0)
71
+ bool(true)
72
+ int(1)
73
+ int(0)
74
+ int(2)
75
+ int(3)
76
+ int(2)
77
+ int(3)
78
+ int(3)
79
+ int(3)
80
+ int(5)
81
+ int(5)
82
+ int(5)
83
+ int(7)
84
+ bool(false)
85
+ int(7)
86
+ int(8)
87
+ bool(false)
88
+ int(8)
89
+ int(10)
90
+ int(10)
91
+ int(10)
You can’t perform that action at this time.
0 commit comments