Hook ist ein ereignisgesteuerter Nachrichtenverarbeitungsmechanismus, der Nachrichten von anderen Anwendungen abfangen und verarbeiten kann. Immer wenn eine bestimmte Nachricht gesendet wird, erfasst das Hook-Programm die Nachricht, bevor sie das Zielfenster erreicht Die Hook-Funktion übernimmt zuerst die Kontrolle.
Hook-Implementierung
Die vollständige Implementierung von Hook 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 und fügen Sie dann den Ereignisnamen, die Klasse und die Methode, die dem Ereignis entsprechen, in die globale Variable ein. Das heißt, einen Haken zu montieren.
Die zweite Stufe besteht darin, das Ereignis auszulösen, was im Wesentlichen darin besteht, die globale Ereignisvariable nach dem Namen des auszulösenden Ereignisses abzufragen, dann die registrierte Klasse und Methode zu finden, zu instanziieren und auszuführen. Auf diese Weise können wir die traditionelle Regel, dass Programme in Ordnung sein müssen, loswerden und den Zweck der Entkopplung weiter erreichen.
Codebeispiel einsclass Ball{ public function down(){ echo "ball is downing "; //注册事件 Hook::add("man"); Hook::add("Women"); } public function do(){ Hook::exec(); } } // 钩子的定义 class Hook{ private $hooklist = null ; // 添加 public function add($people){ $this->hooklist[] = new $people(); } // 触发事件 public function exec(){ foreach($this->hooklist as $people){ $addon ->act(); } } } // 钩子实现 class man(){ public function act(){ echo 'notiong'; } } class WoMan(){ public function act(){ echo 'oh my god '; } } class child(){ public function act(){ echo 'oh my god '; } } $ball = new Ball(); $ball ->down(); $ball ->do();
Codebeispiel zwei
// 如果需要添加小孩,就可以做添加一个小孩Hook::add("child"); /*=========================钩子的升级版============================================/* class Hook{ private $hookList; //添加 function add($name,$fun){ $this->hookList[$name][] = $fun; } function excec($name){ $value = func_get_args(); unset($value[0]); foreach ($this->hookList[$name] as $key => $fun) { call_user_func_array($fun, $value); } } } $hook = new Hook(); $hook->add('women',function($msg){ echo 'oh my god'.$msg ; }) $hook->add('man',function($msg){ echo 'nothing'.$msg ; }) // 执行 $hook->excec('man','taoge'); $hook->excec('women','xxx');
Empfohlenes Tutorial: „PHP“
Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Hook?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!