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.
57 lines
1.0 KiB
57 lines
1.0 KiB
--TEST--
|
|
generator re-yielding array elements via foreach with \Generator return type
|
|
--FILE--
|
|
<?php
|
|
|
|
function main()
|
|
{
|
|
$g = test([1, 2, 3]);
|
|
var_dump($g);
|
|
foreach ($g as $value)
|
|
{
|
|
var_dump($value);
|
|
}
|
|
}
|
|
|
|
function test(array $array): \Generator
|
|
{
|
|
foreach ($array as $value)
|
|
{
|
|
yield $value;
|
|
}
|
|
}
|
|
|
|
// main();
|
|
?>
|
|
--EXPECTF--
|
|
object(FiberGenerator)#%d (9) {
|
|
["callback":"FiberGenerator":private]=>
|
|
object(Closure)#%d (2) {
|
|
["function"]=>
|
|
string(19) "stdClass::{closure}"
|
|
["this"]=>
|
|
object(stdClass)#%d (1) {
|
|
["box"]=>
|
|
resource(%d) of type (php::box)
|
|
}
|
|
}
|
|
["fiber":"FiberGenerator":private]=>
|
|
NULL
|
|
["current":"FiberGenerator":private]=>
|
|
NULL
|
|
["key":"FiberGenerator":private]=>
|
|
NULL
|
|
["valid":"FiberGenerator":private]=>
|
|
bool(false)
|
|
["state":"FiberGenerator":private]=>
|
|
int(0)
|
|
["yield_count":"FiberGenerator":private]=>
|
|
int(0)
|
|
["next_index":"FiberGenerator":private]=>
|
|
int(0)
|
|
["return_value":"FiberGenerator":private]=>
|
|
NULL
|
|
}
|
|
int(1)
|
|
int(2)
|
|
int(3)
|
|
|