Задать переменную в выражении оператора if

Сегодня я просмотрел интересный код. Я попытался выяснить, является ли это особенностью PHP, или я чего-то не хватает, но не смог найти что-либо в Google. Вероятно, потому что я не знаю его имени.

Код

if($logo = \Repositories\Logo::getLogoData($id)){
     $logo_href = $logo->link;
}

Переменная $logo больше не устанавливается. Похоже, выражение в этом операторе if проверяет, возвращает ли этот метод класса что-либо и одновременно устанавливает переменную $logo для использования в инструкции.

Это правда? Если да, то в мире это называется!?!

Ответы

Ответ 1

Вы можете сделать такое задание в условном выражении. То, что произошло логически, заключается в том, что значение присваивается $logo, а затем $logo оценивается, является ли оно правдивым. Если он правдивый, выполняется код в условном выражении.

Вы будете часто рассматривать этот вид присвоения/оценки в случае циклизации по наборам результатов базы данных, но в целом я бы предположил, что его следует избегать за пределами такого общего использования для ясности при чтении кода g.

Ответ 2

Да, это особенность. Это нравится:

$a=$b=5;

Но в этом случае представьте результат bool, если в качестве var $a.

Однако, IDE используются, чтобы жаловаться на такие решения, потому что == vs. = как очень распространенный возможный источник ошибок.