parent
94b61d58f8
commit
20add2008a
4 changed files with 138 additions and 32 deletions
@ -0,0 +1,29 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
interface ParentByRef |
||||||
|
{ |
||||||
|
public function setValue(&$value): void; |
||||||
|
} |
||||||
|
|
||||||
|
interface ChildByRef extends ParentByRef |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
final class ByRefInterfaceReceiver implements ChildByRef |
||||||
|
{ |
||||||
|
public function setValue(&$value): void |
||||||
|
{ |
||||||
|
$value = 42; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function invokeByRefInterface(ChildByRef $receiver): void |
||||||
|
{ |
||||||
|
$receiver->setValue(value: $value); |
||||||
|
var_dump($value); |
||||||
|
} |
||||||
|
|
||||||
|
function main(): void |
||||||
|
{ |
||||||
|
invokeByRefInterface(new ByRefInterfaceReceiver()); |
||||||
|
} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
--TEST-- |
||||||
|
interface-typed receiver resolves inherited reference parameter signature |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
interface ParentByRef |
||||||
|
{ |
||||||
|
public function setValue(&$value): void; |
||||||
|
} |
||||||
|
|
||||||
|
interface ChildByRef extends ParentByRef |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
final class ByRefInterfaceReceiver implements ChildByRef |
||||||
|
{ |
||||||
|
public function setValue(&$value): void |
||||||
|
{ |
||||||
|
$value = 42; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function invokeByRefInterface(ChildByRef $receiver): void |
||||||
|
{ |
||||||
|
$receiver->setValue(value: $value); |
||||||
|
var_dump($value); |
||||||
|
} |
||||||
|
|
||||||
|
function main(): void |
||||||
|
{ |
||||||
|
invokeByRefInterface(new ByRefInterfaceReceiver()); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
int(42) |
||||||
Loading…
Reference in new issue