Вы можете создать генератор в PHP, который выдает значения:
function genOneTwoThree() {
foreach ([1,2,3] as $i => $number)
yield $i => $number;
}
Тогда вы можете потреблять их как:
foreach (genOneTwoThree() as $i) {
echo $i;
}
Это использование lvalue задокументировано здесь: https://secure.php.net/manual/en/language.generators.syntax.php#control-structures.yield
Но yield также может быть использован как значение:
function printer() {
while (true) {
$string = yield;
echo $string;
}
}
$printer = printer();
$printer->send('Hello world!');
$printer->send('Bye world!');
Этот «потребительский» пример приведен в документации «Генератор» на https://secure.php.net/manual/en/generator.send.php
Есть ли другое место, которое фактически документирует этот тип использования? У меня есть еще один конкретный вопрос:
Задача ещё не решена.
Других решений пока нет …