Merge pull request 'fix(compiler): 修复引用参数是对象时调用方法错误' (#6) from fix-ref-object into master
Reviewed-on: #6pull/11/head
commit
8044fb05ee
2 changed files with 60 additions and 1 deletions
@ -0,0 +1,58 @@ |
||||
--TEST-- |
||||
Reference parameter with object type - property access and method call |
||||
--FILE-- |
||||
<?php |
||||
class Test |
||||
{ |
||||
public int $value = 123; |
||||
|
||||
public function abc(): string |
||||
{ |
||||
return "abc"; |
||||
} |
||||
} |
||||
|
||||
function test1(Test &$test): void |
||||
{ |
||||
var_dump($test->value); |
||||
var_dump($test->abc()); |
||||
$test->value = 456; |
||||
$test = clone $test; |
||||
$test->value = 789; |
||||
} |
||||
|
||||
function test2(&$test) |
||||
{ |
||||
var_dump($test->value); |
||||
var_dump($test->abc()); |
||||
$test->value = 456; |
||||
$test = clone $test; |
||||
$test->value = 789; |
||||
} |
||||
|
||||
function main() |
||||
{ |
||||
$test = new Test(); |
||||
$testOrigin = $test; |
||||
test1($test); |
||||
var_dump($test !== $testOrigin); |
||||
var_dump($testOrigin->value, $test->value); |
||||
|
||||
$test = new Test(); |
||||
$testOrigin = $test; |
||||
test2($test); |
||||
var_dump($test !== $testOrigin); |
||||
var_dump($testOrigin->value, $test->value); |
||||
} |
||||
?> |
||||
--EXPECTF-- |
||||
int(123) |
||||
string(3) "abc" |
||||
bool(true) |
||||
int(456) |
||||
int(789) |
||||
int(123) |
||||
string(3) "abc" |
||||
bool(true) |
||||
int(456) |
||||
int(789) |
||||
Loading…
Reference in new issue