2010-11-22 4 views
3

Gegeben:Was ist der Grund für die Warnung "Zuweisung in Bedingung" in der Zend Studio IDE?

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

Die * $ variable = get_variable ('variable') * führt eine 'Zuordnung in Zustand' Warnung in Zend Studio. Ich verstehe, was die Warnung bedeutet, aber weiß jemand, was dahinter steckt? Sind es nur Kodierkonventionen, eine Frage der Lesbarkeit usw.?

+0

Niemals ZS verwendet, aber in Netbeans können Sie die Warnung loswerden, indem Sie ein weiteres Paar Klammern hinzufügen, dh. machen Sie Ihre Aussage wie 'if (($ a = $ b))'. – Maerlyn

Antwort

5

Dies ist eine sehr häufige Warnung von IDEs/Compiler in den meisten Sprachen ausgegeben werden, die diesem Konstrukt erlauben: da = (Zuordnung) und == (Vergleich) sehr ähnlich sind, und der Vergleich ist häufiger innerhalb einer if Aussage, ist die Warnung genau dort, um dich wissen zu lassen, dass du versehentlich eine Aufgabe aufgegeben hast, wo du wirklich einen Vergleich beabsichtigst.

3

Es tut dies, weil:

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

ganz in der Nähe ist:

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

Erstere nicht gerade eine gute Praxis ist, in zu erhalten. Zend Studio nimmt an, dass Sie den letzteren Fall wahrscheinlich eher gemeint haben, also warnt es Sie davor. Um nicht zu sagen, dass dies kein nützliches Werkzeug ist. Normalerweise ist es in einer while-Schleife akzeptabler, eine Datei zeilenweise zu lesen (solange noch eine Zeile zu lesen ist). Das Problem ist, dass es schwierig ist, sich schnell herauszupicken.

0

Ich glaube, dass es hauptsächlich da ist, weil Leute normalerweise das Doppel gleich vergessen. Dies sollte die Beseitigung der Warnung erhalten:

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

Denn oft seinen nur einen Tippfehler, wenn Sie einen vergessen „=“

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

So ist die IDE raten Sie, um einen Blick zu haben.

0

Es ist sehr, sehr häufig Fehler, Zuweisungsoperator = statt Gleichheitsprüfung == zu schreiben.

In allen Fällen weiß ich, dass Sie diese Warnung loswerden können, indem Sie die Zuweisung in Klammern wie folgt umschließen.

Verwandte Themen