Facebook
Twitter
Google+
Kommentare
0

Callbacks und Hooks in PHP

Dies ist ein Text, der von einem Autor auf content.de erstellt wurde. Mehr dazu im Artikel über den content.de Test.

Callbacks und Hooks sind beliebte Methoden in PHP, verschiedene Funktionen untereinander kommunizieren zu lassen. Sie dienen insbesondere der Funktionserweiterung. So nutzen beispielsweise Systeme wie WordPress und Drupal Callbacks und Hooks, um Plugins und Module sauber zu implementieren.

Die Bedeutung des Callback

Mit dem Callback werden ein oder mehrerer Parameter an eine Funktion übergeben. Diese Parameter werden über den Callback, zu deutsch “Rückruf”, direkt übergeben oder von einer anderen Stelle des Skripts abgerufen.

Beim Callback wird grob zwischen einfachen Funktionsnamen, Klassenmethoden und statischen Klassenmethoden unterschieden. In allen drei Fällen leitest du die Rückrufaktion mit call_user_func ein. Die aufgerufene Funktion startet aufgrund dieses Befehls den Abruf der übergebenen Parameter, welche in Form von Arrays oder Argumenten definiert sind, und gibt die entsprechenden Werte aus.

Einfacher Funktionsname und Klassenmethode

Es handelt sich beim Callback also um eine eigenständige Funktion, mit der du einer anderen Funktion einen Befehl erteilst. Mit diesem Befehl sind der Funktionsname und die Parameter als Argumente oder Arrays anzugeben, die abgerufen werden sollen. Hier ein kleines Beispiel für einen Callback mit einem einfachen Funktionsnamen:

// Callback mit einfachem Funktionsnamen
function mein_erster_callback() {
    echo 'Deine erste Callback-Funktion';
}
call_user_func('mein_erster_callback');

In obigem Beispiel ist “mein_erster_callback” der Funktionsname. Das übergebene Argument lautet “Deine erste Callback-Funktion” und wird mit call_user_func als solches ausgegeben. Ähnlich verhält es sich mit der Klassenmethode:

// Ein Callback nach der Klassenmethode
class Beispielklasse {
    function MeinZweiterCallback () {
        echo 'Deine zweite Callback-Funktion':
    }
}

Statt der Funktion wird hier die Klasse aufgerufen, die Ausgabe ist “Deine zweite Callback-Funktion”.

Callback-Funktionen mit array_map

Natürlich kannst du mit einem Callback auch kompliziertere Aktionen ausführen. Ein Beispiel dazu ist array_map, was die Callback-Funtion auf verschiedene Elemente anwendet. Mit array werden die Elemente definiert, die von array_map() abgerufen und verarbeitet werden sollen. Es ist auch möglich, verschiedene Elementegruppen über arrays zu definieren. Eine einfache Callback-Funktion mit array_map, in welchem die einzelnen Elemente mit sich selbst multipliziert werden:

function multiplizieren($n) {
    return($n * $n);
}
$a = array(1, 3, 5, 6, 12);
$b = array_map('multiplizieren', $a);
print_r($b);

Die Ausgabe lautet 1, 9, 25, 36, 144. Analog können beispielsweise in Communities beliebige Benutzerdetails oder andere Datenbank-Elemente mit einem Callback abgerufen und gelistet oder weiterverarbeitet werden.

Bedeutung des Hook

Ein Hook macht in etwa dasselbe wie der Callback. Du kannst ihn anwenden, um Programmcode in eine Anwendung zu integrieren. Er fungiert quasi als Schnittstelle. Der Sinn dahinter ist die Erweiterung einer Anwendung zu bestimmten Ereignissen oder Zeitpunkten. Über einen Hook kannst du also fremden Code abrufen und in der eigenen Anwendung damit arbeiten.

Es gibt Software, die genau darauf ausgerichtet ist und mit sogenannten Events arbeitet. Dies ist zum Beispiel bei Shopsystemen hilfreich. Es werden extern verschiedene Events definiert, die nach einer Registrierung an die eigene Funktion übermittelt werden. Dieser Übermittlung dient intern der Hook.

flattr this!

Über den Autor

PHP Gangsta

Der zweitgrößte deutsche, eher praxisorientierte PHP-Blog von Michael Kliewe veröffentlicht seit Mitte 2009 Artikel für Fortgeschrittene.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen