Annotation of embedaddon/php/Zend/tests/bug54039.phpt, revision 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>