Generators
The ReflectionGenerator
class has been added for
introspecting Generator
objects:
function xrange(int $start, int $end, int $step = 1) {
for ($i = $start; $i <= $end; $i += $step) {
yield $i;
}
}
$generator = new ReflectionGenerator(xrange(1, 2, 1));
var_dump($generator->getExecutingGenerator());
var_dump($generator->getExecutingFile());
var_dump($generator->getExecutingLine());
var_dump($generator->getTrace());
var_dump($generator->getFunction());
var_dump($generator->getThis());
Executing the code shown above will print the output shown below:
array(0) {
}
int(3)
string(17) "example.php"
object(Generator)#2 (0) {
}
object(ReflectionFunction)#3 (1) {
["name"]=>
string(6) "xrange"
}
NULL
The getExecutingGenerator()
method returns the
executing Generator
object,
getExecutingFile()
and getExecutingLine()
return the full path and name of the file in which as well as the
number of the line on which the executing generator was created,
getFunction()
returns an
ReflectionFunctionAbstract
instance that represents the
generator function, getTrace()
returns the trace of the
currently executing generator, and getThis()
returns
the $this
reference the generator has access to if it
was declared in a class.