Heim  >  Artikel  >  PHP-Framework  >  Thinkphp-Hook-Implementierungsmethode

Thinkphp-Hook-Implementierungsmethode

尚
nach vorne
2020-04-20 09:09:393077Durchsuche

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);
    }

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen