- 在 CompilerBase.php 中添加对 Expr_Closure 节点类型的解析处理 - 实现 parseClosure 方法来编译 PHP 闭包为 C++ 代码 - 添加临时变量生成和缩进级别管理逻辑 - 处理闭包参数和 use 子句中的变量捕获 - 验证闭包中使用的变量是否已定义 - 添加闭包示例文件 closure.php 和对应测试文件 - 修复 fcall.php 中的调试输出注释问题pull/1/head
parent
60ba3da404
commit
f2e7b70043
4 changed files with 84 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||||||
|
<?php |
||||||
|
function main(): int |
||||||
|
{ |
||||||
|
$a = 100; |
||||||
|
$b = [1, 2, 3]; |
||||||
|
$fn = function ($x) use ($a, $b) |
||||||
|
{ |
||||||
|
var_dump($a); |
||||||
|
var_dump($b); |
||||||
|
var_dump($x); |
||||||
|
}; |
||||||
|
$fn(1000); |
||||||
|
return 0; |
||||||
|
} |
||||||
@ -0,0 +1,28 @@ |
|||||||
|
--TEST-- |
||||||
|
closure 001 |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
function main() |
||||||
|
{ |
||||||
|
$a = 100; |
||||||
|
$b = [1, 2, 3]; |
||||||
|
$fn = function ($x) use ($a, $b) { |
||||||
|
var_dump($a); |
||||||
|
var_dump($b); |
||||||
|
var_dump($x); |
||||||
|
}; |
||||||
|
$fn(1000); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
int(100) |
||||||
|
array(3) { |
||||||
|
[0]=> |
||||||
|
int(1) |
||||||
|
[1]=> |
||||||
|
int(2) |
||||||
|
[2]=> |
||||||
|
int(3) |
||||||
|
} |
||||||
|
int(1000) |
||||||
|
|
||||||
Loading…
Reference in new issue