@OloloyOloloevich

Почему этот код так странно себя ведет?

<?php
function test($var = false){
    if ($var) {
        yield 2;
    }
    return 1;
}
echo test();

Почему if {} отработал так, как будто $var = true?
(PHP 7)
  • Вопрос задан
  • 266 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что любая функция, содержащая yield, возвращает генератор, даже если этот yield недостижим при вызове функции. То есть, при вызове функции test() возвращается объект-генератор, сама функция не отрабатывает, а уже при вызове генератора срабатывает функция, возвращая значение, если сработает yield.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Идеальный пример опыта "у таракана уши в ногах".

РНР выдает тебе ошибку, потому что ты неправильно используешь генератор. О чем тебе чистым английским языком и сообщает. А условия тут не при чем.

Перепиши свой опыт БЕЗ условия,
function test(){
    yield 1;
}
echo test();

И подумай, причем здесь вообще if.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы