Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] was ist ein callback

Einklappen

Neue Werbung 2019

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

  • [Erledigt] was ist ein callback

    Auf die Gefahr hin, vom Forum zu fliegen, möchte ich trotzdem meinen Mut zusammennehmen, die im Betreff genannte Frage zu stellen.

    Ich habe schon so viel gelesen und irgendwie immer noch nicht verstanden, was ein callback ist und in welchen Situationen es eingesetzt wird.

    Bin um eine kurze Erklärung dankbar.

  • #2
    Rückruffunktion – Wikipedia
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Istegelitz, all diese wikis kenne ich bereits. vielleicht bin ich zu dumm dafür, aber anscheinend brauche ich doch eine 'allgemeinere' erklärung, um es richtig zu verstehen.

      Kommentar


      • #4
        Dann erkläre uns bitte, was genau du an der vorliegenden Erklärung nicht verstehst.
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Abstrakt:

          Dein Callback (Telefonnummer) gibst du einer anderen Funktion/Software (Finanzamt) bekannt. Die Software (Finanzamt) arbeitet nun an irgendwas. Irgendwann benötigt die Software (Finanzamt) eine Information von dir und ruft deinen Callback (Telefonnummer) auf.

          Wirds so klarer?
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Nicht alles, was hinkt, ist ein Vergleich

            Die Telefonnummer würde ich eher als Datum betrachten.
            Anrufen ist die Funktion.
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              Ich finde das Beispiel passend. Ein Callback ist erstmal auch nur ein Funktionsname (wir reden nicht von Closures). Statt "ruf mich an" heißt es eben "ruf mich auf".

              http://de.wikipedia.org/wiki/Inversion_of_Control
              [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


              • #8
                Zitat von nikosch Beitrag anzeigen
                Ein Callback ist erstmal auch nur ein Funktionsname
                Trotzdem ist eine Telefonnummer ein Datum - eins, das ich brauche, um genau dich anzurufen.
                Möchte ich lstegelitz anrufen, brauche ich eine andere Nummer.
                Die Funktion (Nummer nachschlagen, wählen, ...) bleibt aber immer die selbe.

                Und deshalb hinkt das Beispiel m.E.

                Statt "ruf mich an" heißt es eben "ruf mich auf".
                Dann lass uns doch nur dich als Person als das Datum in diesem Fall betrachten.
                Und dir einen Brief schreiben, dich persönlich heimsuchen, etc., das wären dann die verschiedenen denkbaren Funktionen - auf welche davon ich mit dir in Kontakt treten soll, das ist irgendwo hinterlegt.
                nikosch->kontaktAufnehmen(callback)

                Das hinkt zwar immer noch, aber nicht mehr ganz so sehr.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  Jo, richtig. "Anrufen" wäre die Funktion.. ich habs zur Vereinfachung synonym verwendet...
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    danke, das war tatsächlich die erleuchtung.

                    Kommentar


                    • #11
                      Haarspalterei. Ein Callback kann auch nur von call_user_func_* verarbeitet werden, wie die Nummer vom Telefon. Zudem besitze ich mehrere Nummern, da sehe ich keinen Unterschied zu E-Mail und Brief.
                      nikosch->kontaktAufnehmen(callback)
                      Ein Callback ist syntaktisch auch nur ein Datum (kein eigenes Sprachkonstrukt) und wird erst in Verbindung mit einem Kontext zu einem Aufruf einer Funktion. Im Endeffekt nix anderes als eine dynamische Variable.
                      [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


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Ein Callback ist syntaktisch auch nur ein Datum (kein eigenes Sprachkonstrukt) und wird erst in Verbindung mit einem Kontext zu einem Aufruf einer Funktion.
                        In PHP vielleicht, ja. Da übergibst du ja wirklich nur einen Namen.
                        Andere Sprachen wie bspw. JavaScript regeln das aber anders - da kannst du direkt die Funktionsreferenz als Callback übergeben.
                        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                        Kommentar


                        • #13
                          Das ist aber das Closurekonzept. Das sollte man klar unterscheiden. Wenn auch gilt:
                          Apart from common user-defined function, create_function() can also be used to create an anonymous callback function. As of PHP 5.3.0 it is possible to also pass a closure to a callback parameter.
                          Aber bspw. eine Methode eines Objektes kann man nur als Callback, nicht aber als Closure übergeben. IMHO.
                          A method of an instantiated object is passed as an array containing an object at index 0 and the method name at index 1.
                          [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


                          • #14
                            Zitat von nikosch Beitrag anzeigen
                            Das ist aber das Closurekonzept. Das sollte man klar unterscheiden.
                            Nein, das eine hat mit dem anderen per se nichts zu tun.

                            Closures sind ein Konzept (das bspw. auch JavaScript kennt), und man kann sie auch als Callback-Funktionen benutzen. Und in dem Fall ist das, was man als Parameter übergibt, auch wirklich eine Funktion - und nicht nur ein Textstring, der sich ggf. zu einer existierenden Funktion/Methode auflösen lässt.
                            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                            Kommentar


                            • #15
                              Eine tolle Diskussion hat sich da ergeben.
                              Meine Frage:
                              In PHP werden doch die meisten call_back_functions als Textstring übergeben die dann in Funktionen aufgelöst werden oder?

                              EDIT:
                              Alleine wenn ich an die ganzen Array-Funktionen denke...
                              array_map(), array_diff_uassoc, array_diff_key, array_walk, array_walk_recursive usw...
                              "My software never has bugs, it just develops random features."
                              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                              Kommentar

                              Lädt...
                              X