Heim > PHP-Framework > Denken Sie an PHP > Thinkphp-Hook-Implementierungsmethode

Thinkphp-Hook-Implementierungsmethode

Freigeben: 2020-04-20 09:09:39
nach vorne
3144 Leute haben es durchsucht

Hook ist ein Auslösemechanismus, wie eine Falle. Wenn das Programm an einer bestimmten Stelle ausgeführt wird, wird die Falle ausgelöst und der Hook ausgeführt. Nach Abschluss der Ausführung fährt das System basierend auf dem anderen fort Ergebnisse der Ausführung.

Thinkphp-Hook-Implementierungsmethode

Das Framework ruft die Importmethode in der Hook-Klasse im Verhalten des Batch-Lademodus auf: Die Standardeinstellung ist die Konfigurationsdatei in Modelcommon. php, welche Datei Verhaltenserweiterung definiert.

Thinkphp-Hook-Implementierungsmethode

2. Überwachen Sie das Verhalten von Tag-Tags mithilfe der Hook:listen()-Methode. Definieren Sie ein Array-Tags in der Hook-Klasse Schlüssel; Verhaltensverhalten ist Wert. Führen Sie das markierte Verhaltens-Plug-In über Hook:exec() aus.

 /**
     * 监听标签的插件
     * @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.'Start');
                trace('[ '.$tag.' ] --START--','','INFO');
            }
            foreach (self::$tags[$tag] as $name) {
                APP_DEBUG && G($name.'_start');
                $result =   self::exec($name, $tag,$params);
                if(APP_DEBUG){
                    G($name.'_end');
                    trace('Run '.$name.' [ RunTime:'.G($name.'_start',$name.'_end',6).'s ]','','INFO');
                }
                if(false === $result) {
                    // 如果返回false 则中断插件执行
                    return ;
                }
            }
            if(APP_DEBUG) { // 记录行为的执行日志
                trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO');
            }
        }
        return;
    }

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

Empfohlenes Tutorial: Thinkphp-Tutorial

Das obige ist der detaillierte Inhalt vonThinkphp-Hook-Implementierungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
ThinkPHP Warum Composer verwenden?
Aus 1970-01-01 08:00:00
0
0
0
thinkphp-Dateien hochladen
Aus 1970-01-01 08:00:00
0
0
0
Wie nennt Thinkphp PHP-Erweiterungen?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage