PHP - Umgekehrte Reihenfolge in if-Anweisung

8

Das ist eine Frage, die mich lange nervt und keine Antwort finden kann ... Bemerkenswert ist, dass es ziemlich oft von Zend Framework Developers verwendet wird,

Was ist der Unterschied zwischen zwei "if" -Anweisungen? :

%Vor%

Für mich sieht der erste ziemlich seltsam aus;]

Danke für die Antwort.

    
alchemication 01.06.2012, 11:47
quelle

7 Antworten

13

Dies ist kein Unterschied für die Art, wie Ihr Skript funktioniert, es ist nur ein Kodierungsstandard, eine Empfehlung

Der Grund, warum es empfohlen wird, es so zu benutzen:

%Vor%

ist die Tatsache, dass wenn Sie vertippen und schreiben = anstelle von == erhalten Sie einen Fehler, während

%Vor%

statt

%Vor%

funktioniert, verursacht aber seltsame Fehler (Zuweisung und der endgültige Wert wird als bool anstatt als Vergleichswert bewertet)

und ich vermute, dass es sich dem strengen Vergleichsoperator (===)

nur als Gewohnheit ausgedacht hat

Update : Da ich merke, dass es auch drei Jahre nach der Veröffentlichung der Antwort noch einige Aktivitäten in diesem Thread gibt, dachte ich, dass ich etwas hinzufügen würde, das ich vergessen habe zu erwähnen. Diese Art der Notation ist als yoda conditions bekannt. Sie können mehr darüber auf dieser Wikipedia-Seite lesen. p>     

mishu 01.06.2012, 11:52
quelle
4

Es empfiehlt sich, if statement zu schreiben. Betrachten Sie diesen Code:

%Vor%

Wenn Sie ein Gleichheitszeichen vergessen haben:

%Vor%

Dann generiert PHP einen Parse-Fehler, also wissen Sie, dass Sie ein = verpasst haben, und Sie können es beheben. Aber dieser Code:

%Vor%

weist 10% $var zu und wird immer als echte Bedingung ausgewertet. Was auch immer der Inhalt von $var ist, der obige Code wird immer 'wahr' und es ist sehr schwierig, diesen Fehler zu finden.

    
flowfree 01.06.2012 12:08
quelle
1

Beim Vergleichen der Werte gibt es keinen Unterschied in der Reihenfolge.

Es kann für jemanden leichter sein, einen solchen Code zu lesen oder zu schreiben, aber für mich ist es das Gleiche wie von rechts nach links zu schreiben.

    
lukas.pukenis 01.06.2012 11:50
quelle
1

Eine solche Reihenfolge der Elemente im Vergleich, so denke ich, soll eine zufällige Zuweisung in if-Anweisungen verhindern.

    
morphles 01.06.2012 11:52
quelle
1

Das Ergebnis ist das gleiche, aber das zweite ist logisch. Sie möchten überprüfen, ob die Variable NULL ist, nicht wenn NULL die Variable ist ... Der Grund dafür ist umgekehrt: Ссылка

    
Robert 01.06.2012 11:52
quelle
1

Diese heißen Yoda-Bedingungen.

Die Idee ist, dass es für eine Person einfacher ist, die Aussage zu scannen und schnell die Absicht der Bedingung zu verstehen, wenn Sie den Wert zuerst setzen (wie falsch, null, wahr oder irgendetwas kurz).

Auch, was Mishu sagte:)

    
Evert 01.06.2012 11:53
quelle
1

Wenn Sie versehentlich schreiben:

%Vor%

Sie erhalten einen Syntaxfehler.

Wenn Sie versehentlich schreiben:

%Vor%

Sie werden lange nach einem Grund für merkwürdiges Verhalten Ihrer Anwendung suchen.

    
mateusza 01.06.2012 11:55
quelle