Sven Rautenberg: ohje

Beitrag lesen

Moin!

Tach!

empty() ist bei so vielen Dingen "empty", die man nicht als empty bezeichnen würde, das geht auf keine Kuhhaut. Beispielsweise ist der String "0" empty. Und das ist eindeutig falsch, denn er enthält ja ein Zeichen.

Kommt auf den Kontext an. Wenn "0" in meinem Fall (zum Beispiel ein Wert in $GET/$_POST) keinen gültigen Wert repräsentieren kann, dann sehe ich empty() nicht grundsätzlich ablehenswert an.

Wenn ich als Leser von Code darüber nachdenken muss, ob die vielfältigen "Nebenwirkungen" von empty() eventuell vom Programmierer in Betracht gezogen wurden, oder aber die Gefahr besteht, dass sie unerwünscht sind, dann lese ich schlechten Code, der seine Intention nicht gut kommuniziert.

Bei Formularvalidierung von erforderlichen Feldern ist das hier viel sinnvoller:

if (isset($_POST['foo']) && $_POST['foo'] !== "") {
    // vorhanden und kein Leerstring - damit machen wir jetzt was
}

Im Vergleich dazu:

if (!empty($_POST['foo'])) {
    // welche Inhalte von foo werden wohl dazu führen, hier reinzuspringen?
}

Beide Varianten kranken daran, dass sie auch Arrays akzeptieren würden, aber die Empty-Variante würde, wie erwähnt, den String "0" eben auch nicht als Inhalt durchlassen.

Wenn man sowas explizit nicht will, sollte man das explizit in den Code reinschreiben.

Ich halte Abstand von empty() - Formulardatenvalidierung ist nicht so schwer hinzukriegen - dafür gibts existierende Bibliotheken, die das viel besser hinkriegen, als es manuell hinzufummeln.

Man möchte sich ja auch weiterbilden und Anfänger sollen es ja gleich "richtig machen". Wie lautet also deine Empfehlung?

Nun ja, Frameworks bieten zur Validierung von Formularen grundsätzlich was an - daran sollte man sich bedienen, wenn man eines benutzt.

Es gibt bei packagist.org außerdem zahlreiche Standalone-Bibliotheken, die man nutzen kann, beispielsweise siriusphp/validation.

- Sven Rautenberg

0 66

Verbesserungen, Kritik, Meinungen

Paul
  • php
  1. 0
    Jörg Reinholz
    1. 0
      Paul
      1. 0
        ChrisB
        1. 0
          Paul
          1. 0
            Jörg Reinholz
            1. 0
              Paul
              1. 0
                Jörg Reinholz
                • programmiertechnik
                1. 0
                  Paul
                  1. 0
                    Jörg Reinholz
                    1. 0

                      Wir nähern uns dem Ziel? : )

                      Paul
                      1. 0
                        Jörg Reinholz
                        1. 0
                          Paul
                          1. 1
                            dedlfix
                            1. 0

                              php update

                              Paul
                              1. 0
                                dedlfix
                                1. 0
                                  Paul
                                  1. 0
                                    dedlfix
                                  2. 0
                                    Jörg Reinholz
                                    1. 0

                                      ohje

                                      Paul
                                      1. 0
                                        Jörg Reinholz
                                        1. 0
                                          Paul
                                          1. 0
                                            Jörg Reinholz
                                            1. 0

                                              Danke an dedlfix und Jörg Reinholz

                                              Paul
                                            2. 0
                                              Bobby
                                              1. 0
                                                Sven Rautenberg
                                                1. 0
                                                  dedlfix
                                                  1. 0
                                                    Sven Rautenberg
                                                    1. 0
                                                      Jörg Reinholz
                                                    2. 0
                                                      dedlfix
                                                      1. 0
                                                        Sven Rautenberg
                                                2. 0
                                                  Bobby
                                                  1. 0
                                                    Sven Rautenberg
                                                    1. 0
                                                      Jörg Reinholz
                                                    2. 0
                                                      Bobby
                                  3. 0
                                    Jörg Reinholz
                            2. 0
                              Jörg Reinholz
                              1. 1
                                Sven Rautenberg
                                1. 0
                                  Jörg Reinholz
                            3. 1
                              Matti Mäkitalo
                        2. 0

                          Kopfkino

                          Paul
                          1. 0
                            Jörg Reinholz
          2. 0

            Antwort II

            Jörg Reinholz
      2. 0

        sha1 ist tot.

        Jörg Reinholz
  2. 0

    NACHTRAG url

    Paul
    1. 0
      ChrisB
      1. 0
        Paul
  3. 0
    hotti
    1. 0

      speichern in $_SESSION

      Paul
      1. 0

        Objekt für die Userdaten

        hotti
        1. 0
          Paul
  4. 0
    Jörg Reinholz
    • selfhtml-wiki
    1. 0
      Matthias Apsel
      1. 0
        Jörg Reinholz
        1. 0
          Matthias Apsel
          1. 0
            Jörg Reinholz
    2. 0
      Matthias Apsel
    3. 0
      hotti
      1. 0
        Mitleser
        1. 0
          Jörg Reinholz
    4. 0

      Zu diesem Zweig: hier get es weiter (Link)

      Jörg Reinholz
    5. 1
      Christian Kruse
      1. 0
        Jörg Reinholz
        1. 0
          Christian Kruse
          1. 0
            Jörg Reinholz
            1. 0
              Christian Kruse