- 在数组赋值操作中添加临时变量存储以支持返回值 - 为属性赋值操作实现逗号表达式确保右值先计算后赋值 - 添加内部函数参数数量验证机制防止运行时错误 - 优化三元运算符表达式确保类型一致性 - 扩展函数调用优化器以支持参数类型和数量检查 - 添加测试用例验证数组维度赋值返回功能 - 添加测试用例验证属性赋值返回功能 - 添加测试用例验证三元运算符类型转换功能pull/1/head
parent
246689db4c
commit
9138dea99f
6 changed files with 143 additions and 9 deletions
@ -0,0 +1,22 @@ |
|||||||
|
--TEST-- |
||||||
|
return assign array dim |
||||||
|
--SKIPIF-- |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
class TestReturnArrayDim |
||||||
|
{ |
||||||
|
public function test() |
||||||
|
{ |
||||||
|
$array['hello'] = [33]; |
||||||
|
return $array['world'] = 999; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main() |
||||||
|
{ |
||||||
|
$obj = new TestReturnArrayDim; |
||||||
|
var_dump($obj->test()); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
int(999) |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
--TEST-- |
||||||
|
return assign array dim |
||||||
|
--SKIPIF-- |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
Trait TestReturnTrait { |
||||||
|
protected ?array $array = null; |
||||||
|
|
||||||
|
protected function makeArray(): array { |
||||||
|
return [1, 3, 4]; |
||||||
|
} |
||||||
|
public function test() |
||||||
|
{ |
||||||
|
if ($this->array !== null) { |
||||||
|
return $this->array; |
||||||
|
} |
||||||
|
return $this->array = $this->makeArray(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
class TestReturnAssignSetProp |
||||||
|
{ |
||||||
|
use TestReturnTrait; |
||||||
|
} |
||||||
|
|
||||||
|
function main() |
||||||
|
{ |
||||||
|
$obj = new TestReturnAssignSetProp; |
||||||
|
var_dump($obj->test()); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
array(3) { |
||||||
|
[0]=> |
||||||
|
int(1) |
||||||
|
[1]=> |
||||||
|
int(3) |
||||||
|
[2]=> |
||||||
|
int(4) |
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
--TEST-- |
||||||
|
return ternary |
||||||
|
--SKIPIF-- |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
class TestReturnTernary |
||||||
|
{ |
||||||
|
protected function isA(): bool { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
protected function isB(): bool { |
||||||
|
return random_int(1, 10000) % 100 < 50; |
||||||
|
} |
||||||
|
|
||||||
|
public function test() |
||||||
|
{ |
||||||
|
return ($this->isA() && $this->isB()) ? 'str' : false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main() |
||||||
|
{ |
||||||
|
$obj = new TestReturnTernary; |
||||||
|
var_dump($obj->test()); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
bool(false) |
||||||
Loading…
Reference in new issue