Задать вопрос
@OloloyOloloevich

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

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

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

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

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

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

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

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