- 添加了对 ?? 运算符的完整编译支持 - 实现了变量存在性检查逻辑 - 添加了链式表达式解析功能 - 集成了测试用例验证功能 - 优化了错误处理机制 - 完善了代码生成流程pull/1/head
parent
cfcbfcdb2f
commit
fdf7eb9765
4 changed files with 131 additions and 6 deletions
@ -0,0 +1,66 @@ |
||||
--TEST-- |
||||
Test ?? operator |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function foobar() { |
||||
echo "called\n"; |
||||
return ['a']; |
||||
} |
||||
|
||||
function main() { |
||||
$var = 7; |
||||
$var2 = NULL; |
||||
|
||||
$obj = new StdClass; |
||||
$obj->boo = 7; |
||||
|
||||
$arr = [ |
||||
2 => 7, |
||||
"foo" => "bar", |
||||
"foobar" => NULL, |
||||
"qux" => $obj, |
||||
"bing" => [ |
||||
"bang" |
||||
] |
||||
]; |
||||
|
||||
var_dump($var ?? 3); |
||||
var_dump($var2 ?? 3); |
||||
echo PHP_EOL; |
||||
var_dump($obj->boo ?? 3); |
||||
var_dump($obj->bing ?? 3); |
||||
var_dump($arr["qux"]->boo ?? 3); |
||||
var_dump($arr["qux"]->bing ?? 3); |
||||
echo PHP_EOL; |
||||
var_dump($arr[2] ?? 3); |
||||
var_dump($arr["foo"] ?? 3); |
||||
var_dump($arr["foobar"] ?? 3); |
||||
var_dump($arr["qux"] ?? 3); |
||||
var_dump($arr["bing"][0] ?? 3); |
||||
var_dump($arr["bing"][1] ?? 3); |
||||
echo PHP_EOL; |
||||
var_dump(foobar()[0] ?? false); |
||||
} |
||||
?> |
||||
--EXPECTF-- |
||||
int(7) |
||||
int(3) |
||||
|
||||
int(7) |
||||
int(3) |
||||
int(7) |
||||
int(3) |
||||
|
||||
int(7) |
||||
string(3) "bar" |
||||
int(3) |
||||
object(stdClass)#%d (%d) { |
||||
["boo"]=> |
||||
int(7) |
||||
} |
||||
string(4) "bang" |
||||
int(3) |
||||
|
||||
called |
||||
string(1) "a" |
||||
@ -0,0 +1,23 @@ |
||||
--TEST-- |
||||
Test ?? operator |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function f($x) |
||||
{ |
||||
printf("%s(%d)\n", __FUNCTION__, $x); |
||||
return $x; |
||||
} |
||||
|
||||
function main() { |
||||
$r1 = f(1); |
||||
$r2 = f(2); |
||||
$a = f(null) ?? $r1 ?? $r2; |
||||
var_dump($a); |
||||
} |
||||
?> |
||||
--EXPECTF-- |
||||
f(1) |
||||
f(2) |
||||
f(0) |
||||
int(1) |
||||
Loading…
Reference in new issue