Maison >cadre php >PensezPHP >Présentation du mécanisme de hook dans le framework tp5

Présentation du mécanisme de hook dans le framework tp5

藏色散人
藏色散人avant
2021-05-08 17:01:113113parcourir

La colonne tutorielle suivante de thinkphp vous présentera le mécanisme de hook dans le framework tp5. J'espère qu'elle sera utile aux amis dans le besoin !

1. Explication officielle

Le comportement est une extension clé du mécanisme d'extension ThinkPHP. Le comportement peut être appelé indépendamment ou lié à une balise. Pour l'écoute, le comportement joue également un rôle majeur. dans le modèle CBD officiellement proposé, on peut voir que le comportement est d'une grande importance dans le cadre ThinkPHP.

2. TP5 est livré avec des hooks (les balises sont déjà intégrées dans le framework TP, il suffit de configurer et d'implémenter les fonctions correspondantes pour l'utiliser)

  1. app_init application Initialisez le bit d'étiquette. Dans la fonction initCommon de thinkApp.php, Hook::listen('app_init');
  2. La balise de démarrage de l'application app_begin, dans la fonction d'exécution de thinkApp.php, est exécutée après le chargement des informations de routage et de demande. Il recevra un paramètre qui stocke les informations de planification de cette demande.
  3. Le bit de balise d'initialisation du module module_init, dans la fonction de module de thinkApp.php, est exécuté avant de charger le contrôleur de requête, reçoit un paramètre et stocke les informations de la requête.
  4. balise de début du contrôleur action_init, dans la fonction module de thinkApp.php, après le chargement du contrôleur, elle est exécutée avant d'utiliser la réflexion pour demander le contrôleur. Il reçoit un paramètre, qui est un tableau. Le premier élément est l'objet d'instance du contrôleur de requête et la deuxième fonction est le nom de la fonction du contrôleur à exécuter.
  5. le bit de balise de filtre de sortie de vue view_filter, dans la fonction fetch de thinkView.php, reçoit un paramètre, la chaîne de vue.
  6. app_end La balise de fin d'application est, dans la fonction d'exécution de thinkApp.php, Hook::listen('app_end');
  7. log_write la balise de méthode d'écriture du journal, lors de l'appel de Log::wirte Exécuté avant la connexion. Reçoit un paramètre, les informations du journal à écrire.
  8. response_end La balise de fin de réponse est. Dans la fonction d'envoi de thinkResponse.php, elle est exécutée après avoir répondu à la demande du client.

3. L'enregistrement et la surveillance des fonctions hook dépendent de thinkHook.php

4. Le système n'a que des fonctions hook, nous pouvons les enregistrer dans applicationtags.php, Vous pouvez également utiliser Hook::add() pour ajouter.

> 1. 官方文档数tags.php会自动加载,但是经测试我下载的tp5不会自动加载tags.php文件,所以就手动在think\start.php文件的App::run()->send();函数之前写了一行代码用于,注册tags文件中的钩子实现。代码为
"php
    // 加载Hook
    Hook::import(require APP_PATH . '/tags.php');
"
> 2. 也可以使用Hook::add和Hook::listen来添加自己的钩子函数。Hook::listen()相当于是标签位,Hook::add()则相当于是对标签位相应的实现。所以要确保Hook::add()在Hoo::listen之前执行,不然就没什么用处了。

5. Liaison des fonctions de hook.

La fonction hook peut lier une classe seule, une méthode dans la classe ou directement une fonction anonyme. Lorsqu'elle est liée à une classe, s'il y a une fonction run dans la classe, la fonction run sera exécutée directement. S'il n'y a pas de fonction run et qu'il y a une fonction avec le même nom que le hook, la fonction sera exécutée. (Remarque : la fonction hook est nommée en casse chameau et la priorité du nom de la fonction hook est supérieure à la priorité de la fonction run)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer