生成器函数在 PHP 中不工作并导致无限循环

Generator function not working in PHP and results in an infinite loop

我复制了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 ... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 448 bytes)

xdebug 通知我脚本的内存已经耗尽之前。

我在 MAMP 上安装了 PHP 5.6.2,为什么我会遇到这个错误?

我发现了这个问题,因为所有像我一样的人都在使用 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,现在一切都如手册所述完美运行。所以我猜扩展有一个错误。