Функция генератора не работает в PHP и приводит к бесконечному циклу

Я скопировал код руководства по PHP:

http://php.net/manual/en/language.generators.syntax.php#example-295

function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
// Note that $i is preserved between yields.
yield $i;
}
}

$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}

Но когда я запускаю этот код в браузере, это приводит к бесконечному циклу:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 … Неустранимая ошибка: допустимый объем памяти 134217728 байт исчерпан (попытался выделить 448 байт)

До Xdebug сообщает мне, что память для сценария была исчерпана.

У меня установлен PHP 5.6.2 на MAMP, почему я испытываю эту ошибку?

1

Решение

Я нашел проблему, потому что все, кто любит меня, используют расширение PHP AOP https://github.com/AOP-PHP/AOP:

Генераторы не будут работать, я открыл вопрос на GitHub https://github.com/AOP-PHP/AOP/issues/93

В моем php.ini Я изменил это:

extension=aop.so

К этому:

;extension=aop.so

Перезапустил Apache и теперь все работает отлично, как говорится в руководстве. Так что я думаю, что есть ошибка с расширением.

1

Другие решения

Других решений пока нет …