Annotation of embedaddon/php/Zend/tests/bug54039.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #54039 (use() of static variables in lambda functions can break staticness)
3: --FILE--
4: <?php
5: function test_1() {
6: static $v = 0;
7: ++$v;
8: echo "Outer function increments \$v to $v\n";
9: $f = function() use($v) {
10: echo "Inner function reckons \$v is $v\n";
11: };
12: return $f;
13: }
14:
15: $f = test_1(); $f();
16: $f = test_1(); $f();
17:
18: function test_2() {
19: static $v = 0;
20: $f = function() use($v) {
21: echo "Inner function reckons \$v is $v\n";
22: };
23: ++$v;
24: echo "Outer function increments \$v to $v\n";
25: return $f;
26: }
27:
28: $f = test_2(); $f();
29: $f = test_2(); $f();
30:
31: function test_3() {
32: static $v = "";
33: $v .= 'b';
34: echo "Outer function catenates 'b' onto \$v to give $v\n";
35: $f = function() use($v) {
36: echo "Inner function reckons \$v is $v\n";
37: };
38: $v .= 'a';
39: echo "Outer function catenates 'a' onto \$v to give $v\n";
40: return $f;
41: }
42: $f = test_3(); $f();
43: $f = test_3(); $f();
44: --EXPECT--
45: Outer function increments $v to 1
46: Inner function reckons $v is 1
47: Outer function increments $v to 2
48: Inner function reckons $v is 2
49: Outer function increments $v to 1
50: Inner function reckons $v is 0
51: Outer function increments $v to 2
52: Inner function reckons $v is 1
53: Outer function catenates 'b' onto $v to give b
54: Outer function catenates 'a' onto $v to give ba
55: Inner function reckons $v is b
56: Outer function catenates 'b' onto $v to give bab
57: Outer function catenates 'a' onto $v to give baba
58: Inner function reckons $v is bab
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>