
Heute betrachte ich einmal das Thema einfache Hooks und deren Implementierung in PHP. Im folgenden werde ich drei verschiedene einfache Möglichkeiten verstellen Hooks anzuwenden. Der eine oder andere wird dieses Konzept bestimmt schon einmal – vielleicht auch unbewußt – eingesetzt haben.
Was sagt wikipedia zu Hooks?
In der Programmierung bezeichnet der Begriff Hook eine Schnittstelle, mit der fremder Programmcode in eine bestehende Anwendung integriert werden kann, um diese zu erweitern, deren Ablauf zu modifizieren oder um bestimmte Ereignisse abzufangen. Dies kann entweder im Quelltext geschehen, der entsprechend modifiziert wird, über Konfigurationsdateien, die den Ablauf eines fertigen Programms verändern, oder über Aufruf von Funktionen, denen der auszuführende Programmcode in irgendeiner Form mitgegeben wird.
Quelle: http://de.wikipedia.org/wiki/Hook_(EDV)
Weiter geht es mit den Code-Beispielen:
1) Sehr einfach
Hier sehen wir eine sehr einfache Umsetzung. Der Hook wird true oder false gesetzt und in einer Weiche wird entschieden welcher Code ausgeführt werden soll.
1 2 3 4 5 6 7 | $hook=true; if($hook) { //hook code }else{ //bestehender code } |
2) Hook wird als Datei eingebunden
Alle Hookcodes werden als Datei in einem Hook Verzeichnis gespeichert. Existiert diese Datei, so wird der Hook Code eingebunden und ausgeführt – falls nicht wird der bestehende Code ausgeführt.
1 2 3 4 5 6 7 | DEFINE('HOOKVERZ','myHooks/') if(file_exists(HOOKVERZ.'hook_name.php')) { //hook code include(HOOKVERZ.'hook_name.php'); } else { //bestehender code } |
3) Funktionsüberprüfung und -aufruf
In diesem Beispiel wird nach einer Funktion gesucht, die den Hookcode enthält. Die Hook-Bibliothek kann in den PHP Code eingebunden werden oder im Code Header eingebunden werden. Existiert diese Funktion, so wird die Funktion aufgerufen und ausgeführt – falls nicht wird der bestehende Code ausgeführt.
1 2 3 4 5 | if (function_exists('myHook')) { start_hook(); } else { //normal code } |
Weiterführende Links:
http://www.phpblogger.net/…/teil-1/
http://www.phpblogger.net/…/teil-2/
http://www.phpblogger.net/…/teil-3/
Hier noch ein super Beitrag zur Nutzung von Hooks in Typo3:
http://www.hann3mann.de/…/hook-unter-typo3-programmieren/
Die Implementierung von Code-Erweiterungen in Typo3 mittels XCLASS bzw. Hooks finde ich spitzenmäßig umgesetzt. Hier kann man noch einiges lernen. Mehr dazu könnt Ihr in einem der nächsten Beiträge lesen.
Habt Ihr noch weitere Ansätze – vielleicht auch objektorientiert? Ich freue mich auf weitere Vorschläge …
Tags: PHP

