- 添加了闭包类型常量 php::Args - 实现了原生类型检查方法 isNativeType - 添加了引用转换方法 convertToRef 处理变量引用 - 修改闭包函数签名使用 php::Args 类型 - 实现了闭包 use 子句中引用传递的支持 - 添加了两个闭包测试用例验证基本功能和引用传递pull/1/head
parent
752767012f
commit
b3dc15a55f
3 changed files with 79 additions and 2 deletions
@ -0,0 +1,30 @@ |
||||
--TEST-- |
||||
Closure 001: Lambda without lexical variables |
||||
--FILE-- |
||||
<?php |
||||
|
||||
$lambda1 = function () { |
||||
echo "Hello World!\n"; |
||||
}; |
||||
|
||||
$lambda2 = function ($x) { |
||||
echo "Hello $x!\n"; |
||||
}; |
||||
|
||||
var_dump(is_callable($lambda1)); |
||||
var_dump(is_callable($lambda2)); |
||||
$lambda1(); |
||||
$lambda2("Universe"); |
||||
call_user_func($lambda1); |
||||
call_user_func($lambda2, "Universe"); |
||||
|
||||
echo "Done\n"; |
||||
?> |
||||
--EXPECT-- |
||||
bool(true) |
||||
bool(true) |
||||
Hello World! |
||||
Hello Universe! |
||||
Hello World! |
||||
Hello Universe! |
||||
Done |
||||
@ -0,0 +1,29 @@ |
||||
--TEST-- |
||||
Closure 002: Lambda with lexical variables (global scope) |
||||
--FILE-- |
||||
<?php |
||||
|
||||
$x = any(4); |
||||
|
||||
$lambda1 = function () use ($x) { |
||||
echo "$x\n"; |
||||
}; |
||||
|
||||
$lambda2 = function () use (&$x) { |
||||
echo "$x\n"; |
||||
}; |
||||
|
||||
$lambda1(); |
||||
$lambda2(); |
||||
$x++; |
||||
$lambda1(); |
||||
$lambda2(); |
||||
|
||||
echo "Done\n"; |
||||
?> |
||||
--EXPECT-- |
||||
4 |
||||
4 |
||||
4 |
||||
5 |
||||
Done |
||||
Loading…
Reference in new issue