Manual:Hooks/de



Hooks erlauben benutzerdefinierten Code auszuführen, wenn eins von vielen definierten Ereignissen (wie das Speichern eines Artikels oder wenn sich ein Benutzer anmeldet) auftreten werden. Zum Beispiel: Der folgende Code-Schnipsel, wenn zur LocalSettings.php hinzugefügt, würde die Funktion  aufrufen, wann immer der   Hook läuft (function arguments):

""

MediaWiki bietet viele Hooks, die verwendet werden können, um die Funktionalität der MediaWiki-Software zu erweitern. Zuweisen einer Funktion (auch bekannt als ein Event-Handler) zu einem Hook führt dazu, dass diese Funktion am entsprechenden Punkt im Haupt-MediaWiki-Code aufgerufen wird, um was auch immer für zusätzliche Aufgabe(n) der Entwickler denkt durchzuführen, wäre an dieser Stelle sinnvoll. Jeder Hook kann mehreren Handlern zugewiesen werden, wobei sie die Funktionen in der Reihenfolge aufrufen, der sie zugeordnet sind, mit jeglichen Änderungen gemacht durch eine Funktion, werden an nachfolgende Funktionen in der Kette weitergegeben.

Hooks sollten am Ende der LocalSettings.php oder in Ihrer eigenen Erweiterungs-Datei auf dem Datei-Umfang (nicht in einer $wgExtensionFunctions oder dem ParserFirstCallInit Hook) zugeordnet werden. Der einfachste Weg, um eine Funktion zu einem Hook zuzuweisen ist:

""

die ein Element an das Array $wgHooks hinzufügen. Sie können auch neue Hooks in Ihrer eigenen Erweiterung erstellen. Hooks die auf diese Weise erstellt werden, sollten der Extension Hook Registry hinzugefügt werden.

Hintergrund
Jeder Hook ist im Code durch einen Aufruf der Funktion wfRunHooks, die in der Datei Hooks.php definiert ist vertreten. Das erste Argument von wfRunHooks ist der Name des Hooks, der zweite ist der Array von Argumenten des Hooks. Die Funktion wfRunHooks findet die Aufgaben, die von dem Array $wgHooks getan werden. Es ruft die PHP-Funktion call_user_func_array mit Argumenten als die Funktion, die aufgerufen werden und ihre Argumente.

Siehe auch die Hook-Beschreibung in Gerrit.

In diesem Beispiel von der   Funktion in Article.php, wird wfRunHooks verwendet, um den ArticleSaveComplete Hook mit mehreren Argumenten aufzurufen:

""

Der Kern ruft viele Hooks auf, aber Erweiterungen können auch Hooks aufrufen.

Schreiben eines Ereignishandler
Ein Event-Handler ist eine Funktion, die zu einem Hook zugeordnet ist, der ausgeführt wird, wenn das Ereignis von diesem Hook vertreten auftritt wird. Es besteht aus:


 * eine Funktion mit einigen optionalen begleitenden Daten, oder
 * einer Aufgabe mit einem Verfahren und einigen optionalen zugehörigen Daten.

Eventhandler werden registriert, indem sie sie zum globalen '$wgHooks' Array für ein gegebenes Ereignis hinzufügen. Hooks können von jedem beliebigen Punkt in der Ausführung hinzugefügt werden, bevor der Hook aufgerufen ist, sind aber am häufigsten in LocalSettings.php hinzugefügt oder seiner enthaltenen Dateien. Alle die folgenden sind gültige Möglichkeiten, um Hooks zu definieren, mit dem Code der ausgeführt wird, wenn 'EventName' passiert:

Wenn ein Ereignis eintritt, wird die Funktion (oder Objekt-Methode) mit den optional zur Verfügung gestellten Daten sowie Event-spezifischen Parametern aufgerufen werden. Beachten Sie, dass wenn ein Objekt der Hook ist und es keine festgelegte Methode gibt, die Standard-Methode namens 'OnEventName' ist. Für verschiedene Ereignisse wäre dies anders: 'onArticleSave', 'onUserLogin', etc.

Die zusätzlichen Daten sind sinnvoll, wenn wir die gleiche Funktion oder ein Objekt für unterschiedliche Zwecke nutzen wollen. Zum Beispiel:

Dieser Code würde in ircNotify resultieren, zweimal zu laufen wenn ein Artikel gespeichert: einmal für 'TimStarling', und einmal für "Brion".

Event-Handler können einen von drei möglichen Werten zurückgeben:


 * true: der Hook ist seit Jahren erfolgreich
 * "some string": ein Fehler ist aufgetreten; Verarbeitung sollten aufhören, und der Fehler sollte dem Benutzer angezeigt werden
 * false: der Hook hat erfolgreich die notwendigen Arbeiten erledigt und die aufrufende Funktion sollte überspringen

Das letzte Ergebnis wäre für Fälle, in denen die Hook-Funktion die wichtigsten Funktionen ersetzt.

Zum Beispiel, wenn Sie einen Benutzer auf eine benutzerdefiniertes System (LDAP, ein anderes PHP-Programm, oder was auch immer) authentifizieren wollen, könnten Sie tun:

Das falsche zurückgeben hat weniger Sinn für Ereignisse wo die Aktion abgeschlossen ist, und wird normalerweise ignoriert.

Verfügbare Hooks
Diese Seite enthält eine Liste von Hooks, die durch die MediaWiki Software bereitgestellt werden, und bekannt ist, zur Version 1.8.2 abgeschlossen zu sein. Es gibt eine Menge von Details die insbesondere für neuere Hooks fehlen, da ihr Zweck/Nutzung noch nicht von den Entwicklern dokumentiert worden ist. Wenn Sie weitere Informationen über eine von ihnen haben, dann fügen Sie es bitte an der entsprechenden Stelle ein.

In den Tabellen gibt die erste Spalte die MediaWiki-Version, dass der Hook in dieser eingeführt wurde, nutzen Sie den Link in der zweiten Spalte, um mehr Informationen über den Hook und wie man es benutzt zu erhalten.

Hooks gruppiert nach Funktion
Einige dieser Hooks können in mehrere Funktionen gruppiert werden.
 * Sektionen: Artikelverwaltung - Seitenbearbeitung - Seitenwiedergabe - Benutzeroberfläche - Spezialseiten - Benutzerverwaltung - Protokollierung - Skinning / Vorlagen - API - Verschiedenes

Hooks gruppiert nach Version
Um Hooks nach Version gruppiert zu sehen, gehen Sie zur obigen Tabelle und klicken Sie auf das Pfeilsymbol im Tabellenkopf.

Siehe auch

 * Manual:$wgHooks
 * Category:Hook extensions/de
 * Manual:Tag extensions/de
 * Manual:Parser functions/de
 * Hooks.txt
 * Einige Beispiele