1--TEST--
2ReflectionGenerator basic test
3--FILE--
4<?php
5
6function foo() {
7    yield;
8}
9
10$gens = [
11    (new class() {
12        function a() {
13            yield from foo();
14        }
15    })->a(),
16    (function() {
17        yield;
18    })(),
19    foo(),
20];
21
22foreach ($gens as $gen) {
23    var_dump($gen);
24
25    $gen->valid(); // start Generator
26    $ref = new ReflectionGenerator($gen);
27
28    var_dump($ref->getTrace());
29    var_dump($ref->getExecutingLine());
30    var_dump($ref->getExecutingFile());
31    var_dump($ref->getExecutingGenerator());
32    var_dump($ref->getFunction());
33    var_dump($ref->getThis());
34}
35
36?>
37--EXPECTF--
38object(Generator)#2 (0) {
39}
40array(1) {
41  [0]=>
42  array(4) {
43    ["file"]=>
44    string(%d) "%s"
45    ["line"]=>
46    int(%d)
47    ["function"]=>
48    string(3) "foo"
49    ["args"]=>
50    array(0) {
51    }
52  }
53}
54int(%d)
55string(%d) "%sReflectionGenerator_basic.%s"
56object(Generator)#6 (0) {
57}
58object(ReflectionMethod)#8 (2) {
59  ["name"]=>
60  string(1) "a"
61  ["class"]=>
62  string(%d) "class@anonymous%s"
63}
64object(class@anonymous)#1 (0) {
65}
66object(Generator)#4 (0) {
67}
68array(0) {
69}
70int(%d)
71string(%d) "%sReflectionGenerator_basic.%s"
72object(Generator)#4 (0) {
73}
74object(ReflectionFunction)#7 (1) {
75  ["name"]=>
76  string(9) "{closure}"
77}
78NULL
79object(Generator)#5 (0) {
80}
81array(0) {
82}
83int(%d)
84string(%d) "%sReflectionGenerator_basic.%s"
85object(Generator)#5 (0) {
86}
87object(ReflectionFunction)#8 (1) {
88  ["name"]=>
89  string(3) "foo"
90}
91NULL
92