Ohne return-Befehl Werte immer 'false'

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

  • #31
    Natürlich glaube ich dir. Aber warum funktionieren die Funktionen nach der Umstellung auf PHP 5 nicht mehr, bei denen im Erfolgsfall kein return-Befehl im Code gesetzt wurde?

    Kommentar


    • #32
      Zitat von weltvolk Beitrag anzeigen
      Aber warum funktionieren die Funktionen nach der Umstellung auf PHP 5 nicht mehr, bei denen im Erfolgsfall kein return-Befehl im Code gesetzt wurde?
      Die Frage ist viel eher, wieso sollte das bei PHP 4 der Fall gewesen sein? Das war niemals so. Also hör jetzt auf mit dieser Sinnlos-Behauptung und fang an vernünftig zu debuggen.

      Kommentar


      • #33
        Wenn eine Funktion keinen return-Befehl hat, gibt sie null zurück. Das hat sich in PHP5 nicht geändert. Wenn Du auf "ungleich true" prüfst, schlägt ein Rückgabewert 'null' genauso an wie 'false' oder jeder andere Wert außer true. Das war auch schon immer so. Deshalb würde ich gern die Original-Stelle sehen, an der Du das Ergebnis prüfst.

        Wenn Du folgendermaßen prüfst:

        if (!$ergebnis)

        schlagen false und null an.

        Wenn Du folgendermaßen prüfst:

        if ($ergebnis === false)

        schlägt nur false an. Das ist im Normalfall die optimale Lösung.

        Kommentar


        • #34
          Es ist ja eigentlich alles gesagt.

          1. Das Verhalten in dieser Hinsicht von PHP 4 zu 5 hat sich nicht geändert.

          2. Wird eine Funktion ohne Rückgabewert wie eine Funktion mit Rückgabewert benutzt ist der Rückgabewert immer NULL.

          2a. Es ist unsinnig eine Funktion ohne Rückgabewert als eine solche nutzen zu wollen.

          3. NULL ist nicht false, wird aber wenn kein Typ überprüft wird es als false angesehen , kann man feststellen wenn man in einer Abfrage den Typ überprüft ( mit ===).

          PHP-Code:
          $ergebnis addieren(1,2);
          if (
          $ergebnis === false) echo 'Es ist false';else echo 'Es ist nicht false'

          Kommentar


          • #35
            Zitat von piratos Beitrag anzeigen
            Es ist ja eigentlich alles gesagt.
            Warum wiederholst Du's dann?

            Zitat von piratos Beitrag anzeigen
            2a. Es ist unsinnig eine Funktion ohne Rückgabewert als eine solche nutzen zu wollen.
            <haarspalterei>
            null ist auch ein Rückgabewert.
            </haarspalterei>

            Kommentar


            • #36
              Ihr habt recht. Es funktionieren nur die Funktionen nicht mehr, die eine Datei übertragen. Einen return-Befehl bei zweischrittigen Funktionen, wie oben die Funktion 'ftp_copy', auszulassen, ist sicherlich unsauber, funktioniert aber weiterhin. Der Fehler liegt also woanders. Wie kann ich den Dateiinhalt von $z denn anzeigen lassen/debuggen?

              Kommentar


              • #37
                Am einfachsten mit file_get_contents().
                Error_reporting() kurzfristig hochdrehen, um alle eventuellen Fehler angezeigt zu bekommen.
                und auch schauen, ob ein curl_error() nach curl_exec() eine Fehlermeldung auswirft.

                Kommentar


                • #38
                  Ich habe es wiederholt weil das alles verkleckert auf diversen Beiträgen kam, quasi als Zusammenfassung.

                  Zitat von pekka Beitrag anzeigen
                  <haarspalterei>
                  Keineswegs , wer Rückgabewerte erwartet sollte einen Rückgabewert definieren, ansonsten ist hier NULL immer trivial, da ein Wert der immer gleich kommen wird ,weil PHP nichts anders hat.
                  Es ist somit auch unsinnig eine Funktion zu der man keinerlei Rückgabe erwartet diese so einzusetzen, da kein Nutzen vorhanden.

                  Kommentar


                  • #39
                    OffTopic:
                    Zitat von weltvolk Beitrag anzeigen
                    Ihr habt recht. [...] Der Fehler liegt also woanders.
                    Hallelujah.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X