Que signifie le crochet PHP ?

Guanhui
Libérer: 2023-03-03 16:02:01
original
5129 Les gens l'ont consulté

Hook est un mécanisme de traitement de messages basé sur des événements qui peut intercepter et traiter les messages provenant d'autres applications. Chaque fois qu'un message spécifique est envoyé, le programme hook capture le message avant qu'il n'atteigne la fenêtre de destination. la fonction hook prend le contrôle en premier.

Que signifie le crochet PHP ?

Implémentation du hook

L'implémentation complète du hook doit être qualifiée de pilotée par les événements. La gestion des événements est divisée en deux étapes. La première étape consiste à enregistrer les événements. Le but est de donner un nom aux « événements » qui peuvent se produire dans le futur. La méthode d'implémentation simple consiste à utiliser le mode singleton pour générer un objet persistant. Ou enregistrez une variable globale, puis insérez le nom de l'événement, la classe et la méthode correspondant à l'événement dans la variable globale. C'est pour monter un crochet.

La deuxième étape consiste à déclencher l'événement, qui consiste essentiellement à interroger la variable globale de l'événement pour connaître le nom de l'événement à déclencher, puis à rechercher la classe et la méthode enregistrées, à instancier et à exécuter. De cette manière, nous pouvons nous débarrasser de la règle traditionnelle selon laquelle les programmes doivent être en ordre et atteindre davantage l’objectif du découplage.

Exemple de code un

class 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();
Copier après la connexion

Exemple de code deux

// 如果需要添加小孩,就可以做添加一个小孩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');
Copier après la connexion

Tutoriel recommandé : "PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal