Урожайность методом PHP - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь использовать yield в PHP 7.3 из метода класса:

<?php

class X {
    public $x;
    public function __construct($x) {
        $this->x = $x;
    }

    public function call_direct() {
        return $this->x;
    }

    public function call_yield() {
        return function() {
            yield $this->x;
        };
    }
}

$a = new X(42);
echo "direct: " . $a->call_direct(), "\n";

$iter = $a->call_yield();
foreach ($iter as $n) {
    echo "yielded: $n\n";
}

Естественно, это выводит direct: 42 ... но не вторую строку. Что мне не хватает, чтобы он также выводил yielded: 42? Действительно ли это возможно в PHP в наши дни?

(Очевидно, мой реальный пример повторяется по списку, но я сократил его до необходимого).

...