В чем смысл предупреждений «Назначение в состоянии» в среде Zend Studio IDE?

Данный:

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

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

Related of "В чем смысл предупреждений «Назначение в состоянии» в среде Zend Studio IDE?"

Это очень распространенное предупреждение, выпущенное 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)) { /* ... */ }