- 在CompilerBase中添加isScalarInt方法用于判断表达式是否为标量整数 - 为parseScalar方法添加返回类型声明string - 从常量列表中移除func_get_arg和func_get_args的不支持标记 - 在FuncCallOptimizer中实现func_get_arg、func_get_args和func_num_args的代码生成 - 添加详细的测试用例验证func_get_arg和func_get_args的功能 - 实现可变参数函数中对这些内置函数的正确处理pull/1/head
parent
898cbe2553
commit
eb2eacc69a
5 changed files with 146 additions and 13 deletions
@ -0,0 +1,29 @@ |
||||
--TEST-- |
||||
func_get_arg |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function foo1($a, $b, $c = 10) |
||||
{ |
||||
var_dump(func_get_arg(2)); |
||||
} |
||||
|
||||
function foo2(...$args) { |
||||
var_dump(func_get_arg(3)); |
||||
} |
||||
|
||||
function foo3($a, $b, $c, ...$args) { |
||||
var_dump(func_get_arg(4)); |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
foo1(2.5, 3); |
||||
foo2(1, 3, 5, 8, 10); |
||||
foo3(1, 3, 5, 8, 10, 12); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
int(10) |
||||
int(8) |
||||
int(10) |
||||
@ -0,0 +1,54 @@ |
||||
--TEST-- |
||||
func_get_args |
||||
--FILE-- |
||||
<?php |
||||
|
||||
function foo1($a, $b, $c = 10) |
||||
{ |
||||
var_dump(func_get_args()); |
||||
} |
||||
|
||||
function foo2(...$args) { |
||||
var_dump(func_get_args()); |
||||
} |
||||
|
||||
function foo3($a, $b, $c, ...$args) { |
||||
var_dump(func_get_args()); |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
foo1(2.5, 3); |
||||
foo2(1, 3, 5, 8, 10); |
||||
foo3(1, 3, 5, 8, 10, 12); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
array(3) { |
||||
[0]=> |
||||
float(2.5) |
||||
[1]=> |
||||
int(3) |
||||
[2]=> |
||||
int(10) |
||||
} |
||||
array(5) { |
||||
[0]=> |
||||
int(1) |
||||
[1]=> |
||||
int(3) |
||||
[2]=> |
||||
int(5) |
||||
[3]=> |
||||
int(8) |
||||
[4]=> |
||||
int(10) |
||||
} |
||||
array(3) { |
||||
[0]=> |
||||
int(8) |
||||
[1]=> |
||||
int(10) |
||||
[2]=> |
||||
int(12) |
||||
} |
||||
Loading…
Reference in new issue