- 修改 CompilerBase.php 中的参数解析逻辑,统一使用 parseCallArgValue 方法 - 添加 materializeCallArgValue 和 shouldMaterializeCallArg 辅助方法 - 对数组维度获取和属性获取表达式进行去间接化处理 - 在参数转换过程中添加对象属性的特殊处理 - 新增 default array property 测试用例验证数组属性初始化功能 - 新增 unset on arrays and variables 测试用例验证对象参数传递行为pull/1/head
parent
e208fe11bb
commit
04b3d7de20
3 changed files with 119 additions and 2 deletions
@ -0,0 +1,46 @@ |
|||||||
|
--TEST-- |
||||||
|
unset on arrays and variables |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class Bar { |
||||||
|
public $object; |
||||||
|
} |
||||||
|
|
||||||
|
function foo($obj) { |
||||||
|
$obj = new ArrayObject(); |
||||||
|
$obj['hello'] = 'world'; |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
$bar = new Bar(); |
||||||
|
$o1 = new stdClass(); |
||||||
|
$o1->a = 1; |
||||||
|
$o1->b = 2; |
||||||
|
$o1->c = 3; |
||||||
|
$bar->object = $o1; |
||||||
|
foo($bar->object); |
||||||
|
var_dump($bar->object); |
||||||
|
|
||||||
|
$arr = ['object' => $o1]; |
||||||
|
foo($arr['object']); |
||||||
|
var_dump($arr['object']); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECTF-- |
||||||
|
object(stdClass)#%d (3) { |
||||||
|
["a"]=> |
||||||
|
int(1) |
||||||
|
["b"]=> |
||||||
|
int(2) |
||||||
|
["c"]=> |
||||||
|
int(3) |
||||||
|
} |
||||||
|
object(stdClass)#%d (3) { |
||||||
|
["a"]=> |
||||||
|
int(1) |
||||||
|
["b"]=> |
||||||
|
int(2) |
||||||
|
["c"]=> |
||||||
|
int(3) |
||||||
|
} |
||||||
@ -0,0 +1,47 @@ |
|||||||
|
--TEST-- |
||||||
|
default array property |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class Foo |
||||||
|
{ |
||||||
|
public array $board; |
||||||
|
|
||||||
|
public function run(): void |
||||||
|
{ |
||||||
|
$this->board = []; |
||||||
|
$board = []; |
||||||
|
for ($i = 0; $i < 4; $i++) { |
||||||
|
$this->board[$i] = 999 + $i; |
||||||
|
$board[$i] = 112 * $i; |
||||||
|
} |
||||||
|
var_dump($board); |
||||||
|
var_dump($this->board); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main() { |
||||||
|
$o = new Foo; |
||||||
|
$o->run(); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
array(4) { |
||||||
|
[0]=> |
||||||
|
int(0) |
||||||
|
[1]=> |
||||||
|
int(112) |
||||||
|
[2]=> |
||||||
|
int(224) |
||||||
|
[3]=> |
||||||
|
int(336) |
||||||
|
} |
||||||
|
array(4) { |
||||||
|
[0]=> |
||||||
|
int(999) |
||||||
|
[1]=> |
||||||
|
int(1000) |
||||||
|
[2]=> |
||||||
|
int(1001) |
||||||
|
[3]=> |
||||||
|
int(1002) |
||||||
|
} |
||||||
Loading…
Reference in new issue