Перейти к содержимому

yield from

Введение

Ключевое слово yield from в PHP используется для делегирования генерации значений другому генератору. Это позволяет объединять несколько генераторов в цепочку, создавая своего рода конвейер, который можно использовать для преобразования или фильтрации данных в реальном времени.

Пример

Ниже приведён пример, демонстрирующий использование yield from в PHP:

Пример использования yield from в PHP

php
<?php

function myGenerator()
{
  yield "Hello";
  yield "World";
}

function myOtherGenerator()
{
  yield "!";
}

function myCombinedGenerator()
{
  yield from myGenerator();
  yield from myOtherGenerator();
}

foreach (myCombinedGenerator() as $value) {
  echo $value . " ";
}

В приведённом выше примере мы имеем три функции-генератора: myGenerator(), myOtherGenerator() и myCombinedGenerator(). Первые два генератора возвращают по одному значению, тогда как третий генератор делегирует выполнение первым двум с помощью ключевого слова yield from.

При вызове myCombinedGenerator() сначала возвращаются значения, сгенерированные myGenerator(), а затем — значения из myOtherGenerator(). Таким образом формируется последовательность из трёх значений: "Hello", "World" и "!".

Цикл foreach затем использует myCombinedGenerator() для перебора этой последовательности, выводя результат: "Hello World !".

Ключевое слово yield from может быть особенно полезно при работе с вложенными структурами данных или когда необходимо выполнить серию преобразований над набором данных. Объединяя несколько генераторов в цепочку, вы можете разбить сложные задачи на более простые и удобные части, что делает код более читаемым и поддерживаемым.

Практика

Каково основное назначение оператора 'yield from' в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.