• php钩子


    <?php
        //统一对外的类
        class Hook{
            private $hooklist = null;
    
            //感觉这里很像观察者模式或者是策略模式
            public function add($action_hook){
                $this->hooklist[]=new $action_hook();
            }
            //触发事件
            public function exec(){
                foreach($this->hooklist as $action_hook){
                    $action_hook->act();//钩子中统一的方法
                }
            }
        }
        //不同用途的钩子具体对象,比如说验证密码,验证权限,统一加密等等,
        class action_hook_1{
            public function act(){
                echo "我来做第一件事";
            }
        }
        class action_hook_2{
            public function act(){
                echo "我来做第2件事";
            }
        }
        class action_hook_3{
            public function act(){
                echo "我来做第3件事";
            }
        }
    //需要绑定钩子的具体对象
    class Ball{
        public function down(){
            echo '我需要做一些通用的验证工作';
            //注册事件,这里就可以加载相应的钩子类,因为在一个文件,直接使用
            $hook = new Hook();
            $hook->add("action_hook_1");
            $hook->add("action_hook_2");
            $hook->add("action_hook_3");
            $hook->exec();
        }
        //淡然也可以注册完就直接执行钩子,也可以写到单独方法
        public function exec(){
        }
    }
    
    $ball = new Ball();
    $ball->down();

      

    今天想搞清楚钩子是什么,大概看了看,有一个地方实在是看不明白,

    public function add($action_hook){
                $this->hooklist[]=new $action_hook();
            }

      直接$action_hook过来的值前面加new  后面加(),就可以建对象了?就算是字符串连接也应该是$action_hook."()"吧?

  • 相关阅读:
    边缘检测(13)
    图像梯度
    高斯金字塔和拉普拉斯金字塔(十一)
    轮廓发现(16)
    圆检测(15)
    直线检测(14)
    图像腐蚀与图像膨胀(18)
    go语言从例子开始之Example18_1.结构体中定义方法
    go语言从例子开始之Example18.struct结构体
    go语言从例子开始之Example17.指针
  • 原文地址:https://www.cnblogs.com/chunshu/p/10825356.html
Copyright © 2020-2023  润新知