TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
981 B
50 lines
981 B
--TEST--
|
|
Dynamic calls require explicit refval for by-reference arguments
|
|
--FILE--
|
|
<?php
|
|
|
|
function dynamic_increment(&...$values): void
|
|
{
|
|
foreach ($values as &$value) {
|
|
$value++;
|
|
}
|
|
unset($value);
|
|
}
|
|
|
|
class DynamicReferenceMutator
|
|
{
|
|
public function suffix(string $suffix, &...$values): void
|
|
{
|
|
foreach ($values as &$value) {
|
|
$value .= $suffix;
|
|
}
|
|
unset($value);
|
|
}
|
|
}
|
|
|
|
function main(): void
|
|
{
|
|
$function = 'dynamic_increment';
|
|
$number = 40;
|
|
$function(refval($number));
|
|
var_dump($number);
|
|
|
|
$mutator = new DynamicReferenceMutator();
|
|
$method = [$mutator, 'suffix'];
|
|
$first = 'one';
|
|
$second = 'two';
|
|
$method('!', refval($first), refval($second));
|
|
var_dump($first, $second);
|
|
|
|
$closure = static function (&$value): void {
|
|
$value .= '?';
|
|
};
|
|
$closure(refval($second));
|
|
var_dump($second);
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
int(41)
|
|
string(4) "one!"
|
|
string(4) "two!"
|
|
string(5) "two!?"
|
|
|