php钩子技术

通过对钩子技术的理解,下面把自己对钩子技术的总结如下:"钩子就是在调用php核心功能代码的同时可以在不修改核心代码的同时,更改核心代码的行为";具体模拟实现如下

/**
 * php 钩子技术
 * 理解:php钩子技术就是再不更新核心代码的同时改变核心代码的行为
 **/
/**
 * 核心类,该类为某框架的核心类,在使用过程中不可以修改,但是还要修改该类的行为,则使用钩子技术,例子如下
 **/
class Core{
    public static function coreMethod(){
        Hook::exec('action1');
        echo 'core code<br />';
        Hook::exec('action2');
    }
}
/**
 * 钩子实现类
 **/
class Hook{
    public static function exec($fun,$class=""){
        if($class==""){//没有设置哪个类去修改核心代码的行为,那么默认执行defaultClass
            $m = new defaultClass();
        }else{
            $m = new $class;    
        }
        if($fun=="action1"){
            $m->action1();    
        }elseif($fun=="action2"){
            $m->action2();    
        }
    }
}
/**
 * 外部类修改核心代码行为
 */
class defaultClass{
    public function action1(){
        echo 'this is action1111<br />';    
    }
    public function action2(){
        echo 'this is action2222<br />';    
    }
}
//调用核心代码
Core::coreMethod();
If the copyright belongs to the longfei, please indicate the source!!!
原文地址:https://www.cnblogs.com/longfeiPHP/p/5542337.html