Я пытаюсь использовать 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 в наши дни?
(Очевидно, мой реальный пример повторяется по списку, но я сократил его до необходимого).