Verständnisfrage zur Bedingungsnotation in Schleifen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verständnisfrage zur Bedingungsnotation in Schleifen

    Hallo liebe PHP-Gemeinde,
    in letzter Zeit stoße ich häufiger auf mir bislang unverständliche Bedingungskonstrukte in Schleifen. Hierbei wird statt der mir bislang bekannten Notation z. B. if (Variable == Wert) nun so notiert: if (Wert == Variable).
    Ist das Ganze eine Laune der Natur oder hat es einen tieferen Sinn, der sich mir nur nicht zu erkennen geben will?

    Danke für alle Antworten im Voraus!

  • #2
    Damit vermeidet man einen klassischen Fehler. Ein
    PHP-Code:
    if ($bla 'blubb'
    funktioniert einwandfrei, ist aber falsch, da nur auf eine Zuweisung geprüft wird. Dagegen wirft ein
    PHP-Code:
    if ('blubb' $bla
    einen Fehler aus und macht uns darauf aufmerksam, dass wir wieder mal ein Gleichheitszeichen vergessen haben.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Ahh okay.....aber Readability geht schon ein bisschen krachen oder ist es nur eine Frage der Gewöhnung?

      Kommentar


      • #4
        Zitat von KillUrMind Beitrag anzeigen
        Ahh okay.....aber Readability geht schon ein bisschen krachen oder ist es nur eine Frage der Gewöhnung?
        Ist reine Gewöhnung. Ich schreib das nur noch so.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Ich schreibs nicht so, aber solche Vergleiche habe ich auch schon seit Jahren nicht mehr gemacht.

          Beispiele:

          PHP-Code:
          if($this->getFoo() == $this->getRequest()->getParam('foo')) {} // kann gar nicht zuweisen

          if(self::TOKEN == $this->getRequest()->getParam('provided')) {} // kann gar nicht zuweisen

          if($this->hallaballuza()) {} // und hier eh nicht 
          Zuletzt geändert von unset; 18.11.2009, 10:25.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            Alles klar. Ansich gar nicht mal so dumm....mal schauen ob ich mich daran gewöhnen kann^^


            @unset: Was meinst du mit "solchen" Vergleichen? Generell (wie denn sonst?) oder nur die "neuere" Form?

            @Kropff: Schreibst du dann jetzt sämtliche Vergleiche so oder nur die Gleichheits-Vergleiche?
            Zuletzt geändert von unset; 18.11.2009, 10:35. Grund: Doppelpost

            Kommentar


            • #7
              Schau dir halt die Beispiele an … es kann gar nicht zu einer Zuweisung kommen …
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Zitat von unset Beitrag anzeigen
                [...]

                PHP-Code:
                if($this->getFoo() == $this->getRequest()->getParam('foo')) {} // kann gar nicht zuweisen

                if(self::TOKEN == $this->getRequest()->getParam('provided')) {} // kann gar nicht zuweisen

                if($this->hallaballuza()) {} // und hier eh nicht 
                Du meinst hier, dass die Reihenfolge egal ist oder? Sonst kann ich das "zuweisen" nicht deuten.
                Wenn ja, dann klar, aber bei konstruierenden Methoden-Calls und deren Resultatüberprüfung möchte ich das Ganze bei "okay" ja nicht nochmal callen müssen, sondern den Wert aus der zwischengespeicherten und zum Vergleich herangezogenen Variable nutzen.

                Kommentar


                • #9
                  Zitat von KillUrMind Beitrag anzeigen
                  Wenn ja, dann klar, aber bei konstruierenden Methoden-Calls und deren Resultatüberprüfung möchte ich das Ganze bei "okay" ja nicht nochmal callen müssen, sondern den Wert aus der zwischengespeicherten und zum Vergleich herangezogenen Variable nutzen.
                  Verstehe ich nicht. Was meinst du genau mit konstruiert? Zusammengeschraubte Methodennamen, die du dynamisch aufrufst? Und selbst wenn: Warum solltest du die nicht noch einmal aufrufen? Und bitte nicht mit der Performance-Keule kommen
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #10
                    Zitat von KillUrMind Beitrag anzeigen
                    @Kropff: Schreibst du dann jetzt sämtliche Vergleiche so oder nur die Gleichheits-Vergleiche?
                    Ich mache das auch nur dann, wenn obiger Fehler auftauchen könnte. Ich habe allerdings im Gegensatz zu unset noch mit einem nicht unerheblichen Teil prozeduraler Programmierung zu tun (Altlasten, xtCommerce, etc.). Bei konsequenter OOP fällt mir auf die Schnelle nur die Prüfung auf boolsche Werte ein.
                    PHP-Code:
                    if (true === $this->getSomething()) 
                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Zitat von unset Beitrag anzeigen
                      Verstehe ich nicht. Was meinst du genau mit konstruiert? Zusammengeschraubte Methodennamen, die du dynamisch aufrufst? Und selbst wenn: Warum solltest du die nicht noch einmal aufrufen? Und bitte nicht mit der Performance-Keule kommen
                      Ich meine Funktionen die mir einen Wert zurückliefern mit dem ich dann weiterarbeiten möchte.

                      Kommentar


                      • #12
                        Meinst du sowas?:

                        PHP-Code:
                        while ($row mysql_fetch_object($resultHandle)) {
                            
                        // ...

                        Das ist wieder was anderes, weil es kein Vergleich ist.

                        Für Vergleiche gilt: wenn du Konstanten, Literale oder Getter-Aufrufe links notierst, kannst du nicht aus versehen = statt == verwenden, ohne dass der Parser meckert.

                        Gruß,

                        Amica
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          nein, was ich meinte ist sowas:
                          PHP-Code:
                          function foo($x null) {
                             return (isset(
                          $x) && is_int($x)) ? $x+=$x;
                          }

                          // "schlecht"; @unset: klar keine zuweiseung
                          if (== foo(1)) {
                             echo 
                          foo(foo(1));
                          }

                          // "besser"
                          $tmp foo(1);
                          if (
                          == $tmp) {
                             echo 
                          foo($tmp);

                          Zuletzt geändert von KillUrMind; 18.11.2009, 13:27.

                          Kommentar


                          • #14
                            Wie ich schon sagte, solche Vergleiche sind mir schon lange nicht mehr untergekommen. Irgendwo wird die 2 herkommen …*und wenn es hardcoded ist, dann stimmt generell schon was nicht … und warum man den anderen Vergleichswert erstmal in einer Variable packen will, erschließt sich mir nicht.
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Warum? Ich meine, wenn ich z. B. für eine Aktion privilege states einer Gruppe abfrage fällt mir nicht ein, wie man es sonst machen sollte. Außer sie sind eben selbst wieder dynamisch angelegt okay.
                              Zum Zwischenspeichern: Im Bsp. mag es ja noch gehen, aber wenn es umfangreichere Methoden sind und sich diese in einer Applikation häufen, bzw. in einer Schleife called werden, dann ist es ein umgänglicher Performance-Verlust, sofern sie länger als eine Zuweisung brauchen. Oder liege ich da falsch?

                              Kommentar

                              Lädt...
                              X