zoukankan      html  css  js  c++  java
  • 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."()"吧?

  • 相关阅读:
    LeetCode | Remove Duplicates from Sorted List
    LeetCode | Remove Duplicates from Sorted Array
    LeetCode | Merge Sorted Array
    opencv的配置、使用
    LeetCode | Merge Two Sorted Lists
    LeetCode | Minimum Depth of Binary Tree
    LeetCode | Same Tree
    LeetCode | Maximum Depth of Binary Tree
    LeetCode | Insertion Sort List
    python运算符优先级
  • 原文地址:https://www.cnblogs.com/chunshu/p/10825356.html
Copyright © 2011-2022 走看看