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>