Генераторы в PHP(yield). Пример работы генератора.

Начиная с версии PHP 5.5 были добавлены генераторы. Для работы с генератором используется ключевое слово yield. Особенность генераторов в том, что состояние выполнения функции запоминается в момент вызова yield. Сам я до появления генераторов мог реализовать аналогичное с использованием классов, поэтому явной необходимости в применении генераторов, тем не менее в одной из рабочих задач столкнулся с их применением другим программистом который писал код до меня. Полагаю что одним из лучших вариантов посмотреть как именно работают генераторы в PHP - проанализировать следующий код и результат его выполнения.

Обратите внимание я умышленно разместил в генераторе вызов return 555; - в данном случаи выполнение данной строчки не приведет к возврату значения 555 из генератора, то есть значения из генератора необходимо возвращать через yield, при этом строчка после строки return выполнена не будет. То-есть не смотря на то что return не возвращает значения из генератора, тем не менее return прерывает работу генератора.

Результат выполнения PHP кода с применением генератора(yield)

Если вызвать var_dump(nums()); результатом выполнения будет: "object(Generator)#1 (0) { }". А вызов echo nums(); приведёт к появлению ошибки: "Catchable fatal error: Object of class Generator could not be converted to string in /var/www/html/test.php on line 13".

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: