Maison > cadre php > PensezPHP > thinkphp hook signifie

thinkphp hook signifie

王林
Libérer: 2019-09-11 17:51:44
avant
3224 Les gens l'ont consulté

thinkphp hook signifie

Tout d'abord, Un hook est un mécanisme de déclenchement, comme un piège Lorsque le programme s'exécute quelque part, le piège sera déclenché puis exécuté. Une fois l'exécution de ce Hook terminée, le système continue en fonction des différents résultats de l'exécution.

Alors, quel est le principe du mécanisme de hook de thinkphp ?

1. Le framework appelle la méthode d'importation dans la classe Hook dans le comportement du mode de chargement par lots ThinkThink->start() : la valeur par défaut est le fichier de configuration dans <.>. Extension de comportement de définition de fichier Modelcommon.php

thinkphp hook signifie

2, le comportement de surveillance des balises de balise via la méthode Hook:listen(). . Défini dans la classe Hook Un tableau de balises : tag is key; Behavior is value Exécutez le plug-in de comportement de la balise via Hook:exec()

 /**
     * 监听标签的插件
     * @param string $tag 标签名称
     * @param mixed $params 传入参数
     * @return void
     */
    static public function listen($tag, &$params=NULL) {
        if(isset(self::$tags[$tag])) {
            if(APP_DEBUG) {
                G($tag.&#39;Start&#39;);
                trace(&#39;[ &#39;.$tag.&#39; ] --START--&#39;,&#39;&#39;,&#39;INFO&#39;);
            }
            foreach (self::$tags[$tag] as $name) {
                APP_DEBUG && G($name.&#39;_start&#39;);
                $result =   self::exec($name, $tag,$params);
                if(APP_DEBUG){
                    G($name.&#39;_end&#39;);
                    trace(&#39;Run &#39;.$name.&#39; [ RunTime:&#39;.G($name.&#39;_start&#39;,$name.&#39;_end&#39;,6).&#39;s ]&#39;,&#39;&#39;,&#39;INFO&#39;);
                }
                if(false === $result) {
                    // 如果返回false 则中断插件执行
                    return ;
                }
            }
            if(APP_DEBUG) { // 记录行为的执行日志
                trace(&#39;[ &#39;.$tag.&#39; ] --END-- [ RunTime:&#39;.G($tag.&#39;Start&#39;,$tag.&#39;End&#39;,6).&#39;s ]&#39;,&#39;&#39;,&#39;INFO&#39;);
            }
        }
        return;
    }

    /**
     * 执行某个插件
     * @param string $name 插件名称
     * @param string $tag 方法名(标签名)     
     * @param Mixed $params 传入的参数
     * @return void
     */
    static public function exec($name, $tag,&$params=NULL) {
            if(&#39;Behavior&#39; == substr($name,-8) ){
            // 行为扩展必须用run入口方法
            $tag    =   &#39;run&#39;;
        }
        $addon   = new $name();
        return $addon->$tag($params);
    }
Copier après la connexion

Le contenu ci-dessus est à titre de référence uniquement !

Tutoriel recommandé :

tutoriel thinkphp

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:
source:csdn.net
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