Heim > Artikel > Backend-Entwicklung > Implementierung und Verständnis von Hook-Funktionen in PHP
Angenommen, es gibt ein solches Programm:
Funktion fun(){
fun1();
fun2();
}
Zuerst führt das Programm fun1() aus, dann führt es fun2() aus und dann endet fun().
Angenommen, wir möchten einige Änderungen an der Funktion vornehmen. „Spaß“ ist beispielsweise eine Analysefunktion. Wir hoffen, in Zukunft umfangreiche Analysefunktionen bereitstellen zu können. Dies ist der Zeitpunkt, an dem Sie die Kraft des Hakens entfesseln können.
Wir können einen Hook-Punkt H in der Funktion fun(){} hinzufügen und dann die Hook-Funktion konfigurieren, bevor wir die Funktion H ausführen, damit wir sie nach Bedarf analysieren können.
Zum Beispiel:
$h=config_item("parser_fun");//Erhalten Sie die entsprechenden Konfigurationsinformationen aus der Konfigurationsdatei
Funktionsspaß($data){
global $h;
return $h();
}
Darüber hinaus kann PHP auch eine eigene Klasse basierend auf dem String bereitstellen und dann aufrufen Eine Methode der Klasse übergibt bestimmte Parameter, was eine sehr solide Grundlage für das Schreiben von PHP-Programmen und die spätere Wartung und Erweiterung bildet.
$c=get_class_name();//Den Namen der Klasse abrufen
$m=get_method_name();//Den Namen der Methode abrufen
$k =$c- >$m();//Eine bestimmte Methode der Klasse ausführen
Originallink: Hook-Funktion und Implementierung in PHP
1 Die Funktion ist voreingestellt und wird unter bestimmten Bedingungen ausgelöst.
2. Nachdem die Hook-Funktion das Programm übernommen hat, kann sie die Richtung des Programms beeinflussen.
Die vollständige Implementierung von Hooks sollte als ereignisgesteuert bezeichnet werden. Ereignisgesteuert ist in zwei Phasen unterteilt. Der Zweck besteht darin, „Ereignissen“, die in der Zukunft auftreten können, einen Namen zu geben. Die einfache Implementierungsmethode besteht darin, ein persistentes Objekt zu generieren oder registrieren Sie eine globale Variable. Fügen Sie dann den Ereignisnamen sowie die Klasse und Methode, die dem Ereignis entsprechen, in die globale Variable ein. Das heißt, einen Haken zu montieren.
Der zweite Schritt besteht darin, das Ereignis auszulösen. Im Wesentlichen besteht es darin, die globale Variable des Ereignisses nach dem Namen des auszulösenden Ereignisses abzufragen und dann die registrierte Klasse und Methode zu finden, zu instanziieren und auszuführen . Auf diese Weise können Sie die traditionellen Regeln, nach denen Programme in Ordnung sein müssen, loswerden und den Zweck der Entkopplung weiter erreichen.
Hook-Funktion kann Nachrichten von anderen Anwendungen abfangen und verarbeiten. Immer wenn eine bestimmte Nachricht gesendet wird, erfasst das Hook-Programm zuerst die Nachricht, bevor es das Zielfenster erreicht, d. h. die Hook-Funktion erhält zuerst die Kontrolle. Zu diesem Zeitpunkt kann die Hook-Funktion die Nachricht verarbeiten (ändern), die Nachricht weiter übermitteln, ohne sie zu verarbeiten, oder das Ende der Nachrichtenübermittlung erzwingen.