- 添加 closure_003.phpt 测试本地作用域词法变量的闭包功能 - 添加 closure_004.phpt 测试作用域生命周期词法变量的闭包功能 - 修改 convertToRef 方法修复原生类型变量引用转换检查逻辑 - 更新编译器基类中的引用转换实现以正确处理变量类型检查pull/1/head
parent
b3dc15a55f
commit
51939af82f
3 changed files with 76 additions and 3 deletions
@ -0,0 +1,34 @@ |
||||
--TEST-- |
||||
Closure 003: Lambda with lexical variables (local scope) |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function run () { |
||||
$x = 4; |
||||
|
||||
$lambda1 = function () use ($x) { |
||||
echo "$x\n"; |
||||
}; |
||||
|
||||
$lambda2 = function () use (&$x) { |
||||
echo "$x\n"; |
||||
}; |
||||
|
||||
$lambda1(); |
||||
$lambda2(); |
||||
$x++; |
||||
$lambda1(); |
||||
$lambda2(); |
||||
} |
||||
|
||||
function main() { |
||||
run(); |
||||
echo "Done\n"; |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
4 |
||||
4 |
||||
4 |
||||
5 |
||||
Done |
||||
@ -0,0 +1,37 @@ |
||||
--TEST-- |
||||
Closure 004: Lambda with lexical variables (scope lifetime) |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function run () { |
||||
$x = 4; |
||||
|
||||
$lambda1 = function () use ($x) { |
||||
echo "$x\n"; |
||||
}; |
||||
|
||||
$lambda2 = function () use (&$x) { |
||||
echo "$x\n"; |
||||
$x++; |
||||
}; |
||||
|
||||
return array($lambda1, $lambda2); |
||||
} |
||||
|
||||
function main() { |
||||
list ($lambda1, $lambda2) = run(); |
||||
|
||||
$lambda1(); |
||||
$lambda2(); |
||||
$lambda1(); |
||||
$lambda2(); |
||||
|
||||
echo "Done\n"; |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
4 |
||||
4 |
||||
4 |
||||
5 |
||||
Done |
||||
Loading…
Reference in new issue