- 添加了闭包类型常量 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