File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests / bug54039.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:47:52 2012 UTC (13 years, 1 month ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>