Задать переменную в выражении оператора 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. = как очень распространенный возможный источник ошибок.