PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Hook- und Callback-Funktionen (Teil 2)

Im ersten Teil dieser kleinen Serie hab ich einen Blick auf vererbte oder abstrakte Klassen geworfen - jetzt ist erst einmal der Callback-Stack dran. Ich denke, das ganze Thema in zwei Teilen abzufackeln, ist ein Ding der Unmöglichkeit. Dafür gibt es einfach zu viele Varianten. In den ersten beiden Teilen stelle ich mal die Basisvarianten vor, in Teil 3 und 4 gehe ich auf mögliche Erweiterungen ein.

Ich hatte bereits erwähnt, das ein Callback-Stack dem Observer-Muster sehr ähnelt. Wie funktioniert das Observer-Muster nun genau? Wer das gepeilt hat, schnallt auch schnell das Callback-Stack-Prinzip:

Alles in allem ist das ganze sehr einfach (Auch hier könnte man Bücher über Bücher schreiben, ich beschränke mich mal auf die Basics): Der Observer ist ein Objekt, bei dem sich andere “anmelden”. Das kann pauschal sein, das heisst das Observerobjekt ist auf eine Aktion spezialisiert. Anders ist es, wenn ein Observerobjekt mehrere Aktionen verarbeiten kann, dann erfolgt die Anmeldung nicht pauschal, sondern ist auf eine Aktion spezialisiert. Schauen wir uns beide Fällt mal als Pseudocode an:

Eine pauschale Registrierung:

$actionObserver->register($object);

Eine auf eine Aktion spezialisierte Registrierung:

$observer->registerFor("action", $object);

Egal, ob es eine pauschale oder eine spezialisierte Observervariante ist, der weitere Ablauf ist der selbe: Wird durch einen Event die gewünschte Aktion ausgelöst, werden alle registrierten Objekte benachrichtigt. Meist wird den Objektfunktionen, die aufgerufen werden, noch Parameter mitgegeben, an Hand derer der Statuswechsel (bzw. der Aktionsauslöser) innerhalb der aufgerufenen Funktionen nachvollzogen und entsprechend weiterverarbeitet werden kann.

Eine abstrakte Funktion innerhalb des Observer-Objektes könnte so aussehen:

function _CallRegisteredObjects($action)
{
    foreach($this->registeredObjects[$action] as $obj)
        $obj->releaseAction($action, $this->attributes);
}

Alle registrierten Objekte werden benachrichtigt, falls eine Statusänderung auftritt. Interessant wird es im nächsten Teil, dann schauen wir uns mal eine konkrete Implementierung an, wie sie auch in ähnlicher Art und Weise von Wordpress und großen Frameworks eingesetzt wird.

See you.

Ähnliche Artikel:

  1. Hook- und Callback-Funktionen (Teil 1)
  2. Hook- und Callback-Funktionen (Teil 3)
  3. Suchen (und finden) mit PHP - Teil 2: Die direkte Suche
  4. Suchen (und finden) mit PHP - Teil 1
  5. Suchen (und finden) mit PHP - Teil 3: Die Basics der Schlagwortsuche

Peter meint dazu:

28. Januar 2008 um 12:30

Der nächste Teil fehlt leider :( noch Lust einen zu schreiben?

timi meint dazu:

30. Januar 2008 um 15:22

Jupp kommt noch :)

Narf meint dazu:

31. März 2008 um 18:49

Danke für diese sehr grundlegenden Erklärungen. Würde mich auch über eine Fortsetzung freuen…

timi meint dazu:

15. April 2008 um 08:11

Hey Narf, ich arbeite bereits an dem neuen Artikel, wird demnächst erscheinen…

manuel meint dazu:

11. Juni 2008 um 12:21

uuuuund? ;)

timi meint dazu:

11. Juni 2008 um 12:32

Hehe nur geduld, der artikel liegt schon in der vö-queue :)

.wired meint dazu:

29. Juni 2008 um 19:06

Ein schöner Artikel. Callbacks habe ich auch erst heute kennengelernt (und diese Seite war die erste, die ich bei Google gefunden habe), allerdings leuchtete mir preg_replace_callback() dabei am meisten ein :) Ich werde es mir aber bestimmt noch einmal ansehen, da ich es für mein CMS gerade wohl brauchen werde…

ksan meint dazu:

4. September 2008 um 15:21

Wäre super, wenn du Teil 3 und 4 noch veröffentlichen würdest. Bin echt gespannt!

Manuel meint dazu:

16. Oktober 2008 um 10:51

Danke für diesen guten Artikel :-)
Ich bin heute das erste mal auf diese Seite gestoßen und werde den Feed gleich abonnieren ;-)

Wann können wir denn mit der Veröffentlichung des nächsten Teils rechnen?
Bin schon gespannt…

timi meint dazu:

17. Oktober 2008 um 13:34

Hi Leute, hier gehts weiter: http://www.phpblogger.net/2008/10/17/hook-und-callback-funktionen-teil-3/

PHP Blogger: Hook- und Callback-Funktionen (Teil 3) - Ein PHP Blog auf deutsch meint dazu:

17. Oktober 2008 um 13:55

[...] Implementierungen. Teil 1 hat die eine Vererbungstechnik vorgestellt, in Teil 2 haben wir uns einen Callback-Stack angeschaut und weil mich ständig Fragen via Mail zu dem Thema erreichen, habe ich mich [...]

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung