Ankündigung

Einklappen
Keine Ankündigung bisher.

Funktionsaufruf durch übergeordnete Methoden beenden

Einklappen

Neue Werbung 2019

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

  • Funktionsaufruf durch übergeordnete Methoden beenden

    Hallo,

    ist folgendes in PHP möglich?

    PHP-Code:
    class {
        public function 
    () {
            
    exit_call(); // frei erfundene PHP-Methode
        
    }
    }
    class 
    extends {
        public function 
    () {
            
    parent::f();
            echo 
    '';
        }
    }
    $b = new B()
    $b->f(); 
    Bei Aufruf die Anfrage komplett zu beenden, ohne das echo ausgeführt und das Skript nicht beendet wird bzw. ohne mit return zu arbeiten.

    Gruß

  • #2
    Das könnte man im Grunde nur durch Exceptions "lösen" - sollte man aber nicht, da Exceptions nicht für einen solchen Zweck gedacht sind.

    PHP-Code:
    class {
        public function 
    () {
            
    exit_call(); // frei erfundene PHP-Methode
            
    throw new Exception('whatever');
        }
    }
    class 
    extends {
        public function 
    () {
            
    parent::f();
            echo 
    '';
        }
    }
    $b = new B()
    try {
      
    $b->f();  
    }
    catch(
    Exception $e) {

    Was soll überhaupt das sinnlose Konstrukt? Wozu Code schreiben, der eh nicht ausgeführt werden soll? Erkläre dich bitte...
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Nein, macht auch keinen Sinn meiner Meinung nach!

      Viel eher würde ich mit return Werten arbeiten:
      PHP-Code:
      class {
          public function 
      () {
            return 
      true// true wenn abgebrochen werden soll, ansonsten false
          
      }
      }
      class 
      extends {
          public function 
      () {
              if (
      parent::f()) return;
              echo 
      '';
          }

      Kommentar


      • #4
        Er schrieb ja: Script nicht beenden & kein return zu verwenden
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Ja aber außer Exceptions verwenden (die dann aber komplett alles unterbrechen) seh ich keine Möglichkeit sowas elegant zu lösen.

          Kommentar


          • #6
            Ihr habt ja vielleicht eine komische Auffassung.
            Was soll überhaupt das sinnlose Konstrukt? Wozu Code schreiben, der eh nicht ausgeführt werden soll? Erkläre dich bitte...
            Nein, macht auch keinen Sinn meiner Meinung nach!
            Exceptions geht/passt überhaupt nicht.

            Es zu erklären würde zu lange dauern, aber glaubt mir, es hat Sinn. Auch wenn PHP keine parallelen Funktionsaufrufe unterstützt.
            Naja gut, dann ist das wohl in PHP nicht möglich.

            Kommentar


            • #7
              Zitat von Juu Beitrag anzeigen
              Ihr habt ja vielleicht eine komische Auffassung.
              Ich glaube nicht, Tim...

              Wenn DU nicht erklären kannst oder willst, worum es hier gehen soll, kann (oder will) dir auch niemand helfen, so einfach ist das.
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Die Frage war doch nur ob es möglich ist bzw. ob PHP solch eine Funktion zur Verfügung stellt und nicht wie der Code verbiegen werden muss, um das Ziel ansatzweise zuerreichen. Oder war die Darstellung so kompliziert?

                Kommentar


                • #9
                  vllt mit break statt return?
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                  Kommentar


                  • #10
                    Leider nicht. Nur für folgende Befehle anwendbar.
                    break beendet die Ausführung der aktuellen for-, foreach-, while-, do-while- oder switch-Struktur.

                    Kommentar


                    • #11
                      PHP: continue - Manual ??
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                      Kommentar


                      • #12
                        Ich kenne keine Sprache in der sowas möglich ist. Es macht auch absolut keinen Sinn? Wofür soll das gut sein? Wenn du uns nicht erklären möchtest was du erreichen willst können wir dir schlecht helfen. Oftmals gibt es viel bessere Wege die dir vielleicht nicht bekannt sind. Wenn wir dein Problem kennen würden könnten wir dir Ratschläge geben!

                        Kommentar


                        • #13
                          Wie gesagt, wenn es diese Möglichkeit in PHP nicht gibt. Gut.
                          Dann werde ich es anders lösen, wie weiß ich schon.

                          Und das war wirklich so schwer, dabei nicht ausfallend zu werden?

                          Ich kenne die Möglichkeit übrigens aus C#, dort kann man dadurch den gesamten Thread beenden. Ist ja wie bereits erwähnt, in PHP von vornerein nicht möglich, aber die Möglichkeit hat Sinn, wenn die Rückgaben durch return immer ausgewertet werden, selbst eine leere Rückgabe stellt einen Wert dar und nicht die Beendigung der Funktion.
                          Bzw. das mit return die Funktion beendet wird, ist ja nur ein Bestandteil der Rückgabe, deshalb auch das Wort return.

                          Und manchmal lassen sich Funktionen in anderen Sprachen finden, wie z.B. in PHP die man gerne woanders auch hätte.
                          Naja, PHP hat diese auch nicht.

                          Da jede Rückgabe, ob String, Array, undefined, NULL etwas in meinem PHP-Code darstellt, reichte es leider nicht aus, einfach nur return zu drücken. Nun muss PHP halt mehr berechnen.

                          Kommentar


                          • #14
                            Genau deswegen wurden Exceptions vorgeschlagen. Wenn die Returnwerte ausnahmslos den Normalfall darstellen, ist der Fall, keinen Rückgabewert zu liefern eine Ausnahme (eben eine Exception).

                            Ich sehe auch niemanden, der hier ausfallend geworden ist.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Die einen beschweren sich wenn der Beitrag zu kurz ist, die anderen wenn es zu ausführlich wird. Wie sollen wir denn dann die richtige Länge finden?

                              Und zwischen "Thread beenden" und "aus mehreren Funktionen direkt herausspringen" liegt technisch gesehen ein großer Unterschied! Das sind zwei verschiedene Dinge. Auch in anderen Sprachen kann man nicht aus verschachtelten Funktionsaufrufen nicht direkt herausspringen. Den Thread beenden kommt auf das selbe hinaus wie wenn du in PHP exit; verwendest!

                              Kommentar

                              Lädt...
                              X