В чем причина предупреждений «Назначение в состоянии» в Zend Studio IDE? - PullRequest
3 голосов
/ 23 ноября 2010

Дано:

if ($variable = get_variable('variable')) {
    // ...
}

* $ variable = get_variable ('variable') * выдает предупреждение «Назначение в условии» в Zend Studio. Я понимаю, что означает предупреждение, но кто-нибудь знает, в чем его обоснование? Это просто соглашения о кодировании, вопрос читабельности и т. Д.?

Ответы [ 5 ]

5 голосов
/ 23 ноября 2010

Это очень распространенное предупреждение, выдаваемое IDE / компиляторами в большинстве языков, которые допускают эту конструкцию: поскольку = (назначение) и == (сравнение) очень похожи, и сравнение чаще встречается в if Скажите, что предупреждение только для того, чтобы вы знали, что вы, возможно, ошиблись в задании, когда вы действительно хотели сравнить.

3 голосов
/ 23 ноября 2010

Это происходит потому, что:

if ($variable = get_variable('variable')) {
    // ...
}

очень близко к:

if ($variable == get_variable('variable')) {
    // ...
}

Первое не совсем хорошая практика. Zend Studio предполагает, что вы, скорее всего, имели в виду последний случай, поэтому предупреждает вас об этом. Не сказать, что это не полезный инструмент. Обычно это более приемлемо в цикле while для чтения файла построчно (пока еще есть строка для чтения). Проблема в том, что трудно быстро выбрать.

0 голосов
/ 23 ноября 2010

Очень распространенная ошибка - писать оператор присваивания = вместо проверки равенства ==.

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

if (($var = 1))
{
    /* ... */
}
0 голосов
/ 23 ноября 2010

Потому что часто это просто опечатка, если вы забыли один "="

if ($a = $b) { /* $a and $b equal? */ }

Итак, IDE советует вам взглянуть на это.

0 голосов
/ 23 ноября 2010

Я полагаю, что это главным образом потому, что люди обычно забывают о двойных равных. Это должно избавить от предупреждения:

if ($variable = get_variable('variable') != false) {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...