挂钩{}

在本文中

处理添加和调度事件

方法

姓名描述
挂钩::__wakeup
挂钩::dispatch发送消息
挂钩::寄存器注册钩子的回调

来源

类Hooks实现HookManager{/***每个钩子的注册回调**@var数组*/受保护的$hooks=[];/***注册钩子的回调**@param string$hook挂钩名称*@param callable$callback调用事件的函数/方法*@param int$priority优先级编号<0较早执行,>0稍后执行*@throws\WpOrg\Requests\Exception\InvalidArgument当传递的$hook参数不是字符串时。*@throws\WpOrg\Requests\Exception\InvalidArgument当传递的$callback参数不可调用时。*@throws\WpOrg\Requests\Exception\InvalidArgument当传递的$priority参数不是整数时。*/公共函数寄存器($hook、$callback、$priority=0){if(is_string($hook)===false){throw InvalidArgument::create(1,'$hook','string',gettype($hook));}if(is_callable($callback)===false){throw InvalidArgument::create(2,'$callback','callable',gettype($callball));}if(InputValidator::is_numeric_array_key($priority)===false){throw InvalidArgument::create(3,'$priority','integer',gettype($priority));}if(!isset($this->hooks[$hook]){$this->hooks[$hook]=[$优先级=>[],];}elseif(!isset($this->hooks[$hook][$priority]){$this->hooks[$hook][$priority]=[];}$this->hooks[$hook][$priority][]=$callback;}/***发送消息**@param string$hook挂钩名称*@param array$parameters传递给回调的参数*@return boolean连续*@throws\WpOrg\Requests\Exception\InvalidArgument当传递的$hook参数不是字符串时。*@throws\WpOrg\Requests\Exception\InvalidArgument当传递的$parameters参数不是数组时。*/公共函数调度($hook,$parameters=[]){if(is_string($hook)===false){throw InvalidArgument::create(1,'$hook','string',gettype($hook));}//严格检查数组,因为array*对象不能与“call_user_func_array()”结合使用。if(is_array($parameters)===false){throw InvalidArgument::create(2,'$parameters','array',gettype($parameter));}if(空($this->hooks[$hook]){返回false;}if(!空($参数)){//从数组中删除潜在的键,以防止它们在PHP8.0中被解释为参数名。$parameters=数组值($parameters);}ksort($this->hooks[$hook]);foreach($this->hooks[$hook]作为$priority=>$hooked){foreach($hooked作为$callback){$callback(…$parameters);}}返回true;}公共函数__wakeup(){throw new\LogicException(__CLASS__.'不应取消序列化');}}

用户贡献的笔记

你必须登录在能够发表注释或反馈之前。