Heim >Backend-Entwicklung >PHP-Tutorial >Implementierungslösung für Plug-in-Mechanismen in PHP

Implementierungslösung für Plug-in-Mechanismen in PHP

高洛峰
高洛峰Original
2016-12-01 11:44:201181Durchsuche

Tipps: Eine Implementierungslösung für den Plug-in-Mechanismus in PHP

Der Ausgangspunkt dieses Artikels ist mein Verständnis des Plug-in-Mechanismus und seiner Implementierung in PHP. Diese Lösung ist nur eine der Implementierungslösungen des Plug-in-Mechanismus. Schreiben Sie sie auf und teilen Sie sie mit allen.

Plug-in, auch Plug-in genannt, bezieht sich auf einen bestimmten Typ von Funktionsmodul (normalerweise von Drittentwicklern implementiert). Seine Eigenschaften sind: Aktivieren Sie es, wenn Sie es benötigen, und aktivieren Sie es, wenn Sie es benötigen Sie benötigen es nicht. Deaktivieren/löschen Sie es bei Bedarf. Unabhängig davon, ob es aktiviert oder deaktiviert ist, hat es keinen Einfluss auf den Betrieb des Kernmoduls des Systems Dadurch wird eine lose Kopplung zwischen dem Kernprogramm und dem Plug-in-Programm erreicht. Ein typisches Beispiel sind die zahlreichen Plug-ins von Drittanbietern in WordPress, wie zum Beispiel das Akimet-Plug-in, das zum Filtern von Spam auf Benutzerkommentare verwendet wird.

Ein robuster Plug-in-Mechanismus muss meiner Meinung nach die folgenden Eigenschaften haben:

Dynamische Überwachung und Laden von Plug-ins (Lookup)
Dynamische Auslösung von Plug-ins

Die beiden oben genannten Punkte Die Implementierung hat keinen Einfluss auf den Betrieb des Kernprogramms

Um Plug-Ins im Programm zu implementieren, sollten wir zunächst daran denken, verschiedene Hooks (Hooks) zu definieren. „Hooks“ ist ein sehr anschauliches logisches Konzept, man kann sich vorstellen, dass es sich um eine vom System reservierte Plug-in-Triggerbedingung handelt. Das logische Prinzip lautet wie folgt: Wenn das System einen bestimmten Hook ausführt, bestimmt es, ob die Bedingungen des Hooks erfüllt sind. Wenn diese erfüllt sind, ruft es zuerst die durch den Hook angegebene Funktion auf und kehrt dann zurück, um mit der Ausführung fortzufahren Der Rest des Programms ruft zuerst die durch den Hook angegebene Funktion auf und überspringt sie einfach. Dies ähnelt ein wenig der „Interrupt-Schutz“-Logik in der Assembly.

Einige Hooks wurden möglicherweise im Voraus vom System entworfen, wie zum Beispiel der Hook, den ich zuvor über die Kommentar-Spam-Filterung erwähnt habe. Normalerweise wurden sie von den Kernsystementwicklern in die Kommentarverarbeitungslogik integriert können von Benutzern angepasst werden (von Drittentwicklern entwickelt) und sind normalerweise in der Präsentationsschicht vorhanden, beispielsweise auf einer gewöhnlichen PHP-Formularanzeigeseite.

Vielleicht haben Sie das Gefühl, dass die oben genannten Wörter langweilig sind und Sie schläfrig machen, aber um den Code zu verstehen, den ich unten geschrieben habe, ist es wichtig, die oben genannten Prinzipien zu verstehen.

Das Folgende ist die Kernimplementierung des Plug-in-Mechanismus in PHP. Der Kern des gesamten Mechanismus ist in drei Hauptblöcke unterteilt:

Eine Plug-in-Manager-Klasse: Dies ist die Kern des Kerns. Es handelt sich um ein anwendungsglobales globales Objekt. Es hat drei Hauptaufgaben:

ist für die Überwachung aller registrierten Plug-Ins und die Instanziierung dieser Plug-In-Objekte verantwortlich.
Verantwortlich für die Registrierung aller Plug-Ins.
Wenn die Hook-Bedingung erfüllt ist, wird die entsprechende Objektmethode ausgelöst.

Plug-in-Funktionsimplementierung: Dies wird meist von Drittentwicklern durchgeführt, es müssen jedoch bestimmte Regeln befolgt werden. Diese Regel wird vom Plug-in-Mechanismus vorgegeben und variiert je nach Plug-in-Mechanismus. Sie sehen den folgenden Anzeigecode. Siehe diese Regel.

Auslösung des Plug-Ins: Das heißt, die Auslösebedingung des Hooks. Konkret handelt es sich hierbei um einen kleinen Codeabschnitt, der dort platziert wird, wo Sie die Plug-in-Implementierung benötigen, um diesen Hook auszulösen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn