Данный:
if ($variable = get_variable('variable')) { // ... }
* $ Variable = get_variable ('variable') * выдает предупреждение «Назначение в состоянии» в Zend Studio. Я понимаю, что означает это предупреждение, но кто-нибудь знает, что за этим стоит? Это просто правила кодирования, вопрос читаемости и т. Д.?
Это очень распространенное предупреждение, выпущенное IDE / компиляторами на большинстве языков, которые допускают эту конструкцию: поскольку =
(присваивание) и ==
(сравнение) очень похожи, а сравнение более часто встречается в инструкции if
, предупреждение есть только там сообщите, что вы, возможно, поставили задание по ошибке, когда вы действительно намеревались сравнить.
Он делает это, потому что:
if ($variable = get_variable('variable')) { // ... }
очень близок к:
if ($variable == get_variable('variable')) { // ... }
Первая не совсем хорошая практика. Zend Studio предполагает, что вы, скорее всего, имели в виду последний случай, поэтому он предупреждает вас об этом. Не сказать, что это не полезный инструмент. Это обычно более приемлемо в цикле while, для чтения файла по строкам (пока еще есть строка для чтения). Проблема в том, что ее трудно быстро выбрать.
Я считаю, что это в основном там, потому что люди обычно забывают двойные равные. Это должно избавиться от предупреждения:
if ($variable = get_variable('variable') != false) { // ... }
Потому что часто это просто опечатка, если вы забыли одно «=»,
if ($a = $b) { /* $a and $b equal? */ }
Поэтому IDE советует вам взглянуть на него.
Очень часто приходится писать оператор присваивания =
вместо проверки равенства ==
.
Во всех случаях я знаю, что вы можете избавиться от этого предупреждения, обернув присвоение в круглых скобках следующим образом.
if (($var = 1)) { /* ... */ }