1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/Zend/tests/bug54039.phpt
DanielEScherzer ea297654f4 Zend/*: fix a bunch of typos (GH-16017)
* Zend/*: fix a bunch of typos

* Zend/tests/try/try_catch_finally_005.phpt: update string length
2024-09-24 10:55:21 +02:00

60 lines
1.5 KiB
PHP

--TEST--
Bug #54039 (use() of static variables in lambda functions can break staticness)
--FILE--
<?php
function test_1() {
static $v = 0;
++$v;
echo "Outer function increments \$v to $v\n";
$f = function() use($v) {
echo "Inner function reckons \$v is $v\n";
};
return $f;
}
$f = test_1(); $f();
$f = test_1(); $f();
function test_2() {
static $v = 0;
$f = function() use($v) {
echo "Inner function reckons \$v is $v\n";
};
++$v;
echo "Outer function increments \$v to $v\n";
return $f;
}
$f = test_2(); $f();
$f = test_2(); $f();
function test_3() {
static $v = "";
$v .= 'b';
echo "Outer function concatenates 'b' onto \$v to give $v\n";
$f = function() use($v) {
echo "Inner function reckons \$v is $v\n";
};
$v .= 'a';
echo "Outer function concatenates 'a' onto \$v to give $v\n";
return $f;
}
$f = test_3(); $f();
$f = test_3(); $f();
?>
--EXPECT--
Outer function increments $v to 1
Inner function reckons $v is 1
Outer function increments $v to 2
Inner function reckons $v is 2
Outer function increments $v to 1
Inner function reckons $v is 0
Outer function increments $v to 2
Inner function reckons $v is 1
Outer function concatenates 'b' onto $v to give b
Outer function concatenates 'a' onto $v to give ba
Inner function reckons $v is b
Outer function concatenates 'b' onto $v to give bab
Outer function concatenates 'a' onto $v to give baba
Inner function reckons $v is bab