kostenloser Webspace werbefrei: lima-city


Return true; wird nicht beachtet?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    trik

    trik hat kostenlosen Webspace.

    Für diesen Code:
    public function recvMessages() {
            $arr_recv  = $this->recvData();
            $arr_data  = $this->splitData($arr_recv);
            
            foreach($arr_data as $arr_splitData) {
                $this->int_lastSentStatus = $arr_splitData['status'];
                if($this->int_lastSentStatus == 134) {
                    $this->str_message = substr($arr_splitData['data'], 0, -1);
                }
                $arr_reply = $this->getReply($arr_splitData);
            
                if($arr_reply['status'] != 0) {
                    if($this->sendData($arr_reply)) {
                        $this->int_lastSentStatus = $arr_reply['status'];
                    } else {
                        http_response_code(500);
                        socket_close($this->socket);
                    }
                }
            }
            
            if($this->int_lastSentStatus == 230 && $this->str_message != '') {
               $this->sendData(array(
                   'status' => 550,
                   'data' => 'Closing'
               ));
               socket_close($this->socket);
               
               echo '############';
               
               return true;
               
            } else if($this->int_lastSentStatus != 550) {
                $this->recvMessages();
            }
            
            return false;
        }


    Bekomme ich als Rückgabe:
    ############bool(false)


    Für mich ist das unerklärlich, warum false zurückgegeben wird, obwohl der sicher in der if mit
    echo '############';
    ist.

    Hat einer von euch eine Idee, wodran das liegen könnte?

    Vielen Dank schonmal für Tipps.
    trik
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Dein "return false;" wir immer ausgeführt. :wink:
    Verschiebe es in den else-Block und es sollte funktionieren.



    Beitrag zuletzt geändert: 30.9.2012 15:03:48 von fatfreddy
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    fatfreddy schrieb:
    Dein "return false;" wir immer ausgeführt. :wink:
    Verschiebe es in den else-Block und es sollte funktionieren.
    Das
    return false;
    kann nur dann ausgeführt werden, wenn der Code auch bis dahin ausgeführt wird und nicht schon vorher per return (in diesem Fall return true;) die Funktion verlassen wird… ;-)
  5. g****e

    Das ist in der Tat merkwürdig, wenn das ###### auch rauskommt. Veränder die returns mal in Strings, also sowas wie "alta" und "ende", und prüfe dann, was als return kommt. Ist nur Testweise. Gibst du den Return über "var_dump( function() ) aus, oder speicherst du es in eine Variable zwischen? Wie sieht die Ausgabe an sich aus? Kann da was verändert werden?

    Sind nur so ein paar Ansatzpunkte. Ich würde da noch einmal rangehen, so über die Returnvalues, vielleicht findet man ja was, obwohl es eigentlich unlogisch ist.

    Liebe Grüße
  6. Autor dieses Themas

    trik

    trik hat kostenlosen Webspace.

    Hab ich gemacht, ist leider trotzdem gleiches Ergebnis... Wird über var_dump ausgegeben. Verändert werden konnte das nicht, aber ich hatte einen doofen Fehler in der Denkweise, was mir aufgefallen ist, als ich es versucht habe aufm Papier darzustellen:
    Die Funktion ruft ja sich selber auf und deshalb sollte es auch so sein, dass sie den Rückgabewert des Eigenaufrufs ausgibt. :wall: Deswegen war im elseif Block das
    $this->recvMessages();
    falsch, so ruft man ja nur die Funtion auf aber gibt nicht den Rückgabewert weiter, sodass die Funtion weiter ausgeführt wird bis zum
    return false;
    . Nachdem ich den Teil in
    return $this->recvMessages();
    geändert hatte, lief es.

    Trotzdem Danke für eure Hilfe :)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!