php-src/Zend/tests/generators/generator_method.phpt
Nikita Popov c9709bfbd7 Remove asterix modifier (*) for generators
Generators are now automatically detected by the presence of a `yield`
expression in their body.

This removes the ZEND_SUSPEND_AND_RETURN_GENERATOR opcode. Instead
additional checks for ZEND_ACC_GENERATOR are added to the fcall_common
helper and zend_call_function.

This also adds a new function zend_generator_create_zval, which handles
the actual creation of the generator zval from an op array.

I feel like I should deglobalize the zend_create_execute_data_from_op_array
code a bit. It currently changes EG(current_execute_data) and
EG(opline_ptr) which is somewhat confusing (given the name).
2012-07-20 16:09:06 +02:00

30 lines
477 B
PHP

--TEST--
Methods can be generators
--FILE--
<?php
class Test implements IteratorAggregate {
protected $data;
public function __construct(array $data) {
$this->data = $data;
}
public function getIterator() {
foreach ($this->data as $value) {
yield $value;
}
}
}
$test = new Test(['foo', 'bar', 'baz']);
foreach ($test as $value) {
var_dump($value);
}
?>
--EXPECT--
string(3) "foo"
string(3) "bar"
string(3) "baz"