钩子机制
来源:互联网 发布:mac 怎么看文件夹 编辑:程序博客网 时间:2024/05/22 12:13
<?php header('Content-Type: text/html;charset=UTF-8'); ?><!DOCTYPE html><html><?phpclass Hook { //action hooks array private static $actions = array(); /** * ads a function to an action hook * @param $hook * @param $function */ public static function add_action($hook,$function) { $hook=mb_strtolower($hook,CHARSET); // create an array of function handlers if it doesn't already exist if(!self::exists_action($hook)) { self::$actions[$hook] = array(); } // append the current function to the list of function handlers if (is_callable($function)) { self::$actions[$hook][] = $function; return TRUE; } return FALSE ; } /** * executes the functions for the given hook * @param string $hook * @param array $params * @return boolean true if a hook was setted */ public static function do_action($hook,$params=NULL) { $hook=mb_strtolower($hook,CHARSET); if(isset(self::$actions[$hook])) { // call each function handler associated with this hook foreach(self::$actions[$hook] as $function) { if (is_array($params)) { call_user_func_array($function,$params); } else { call_user_func($function); } //cant return anything since we are in a loop! dude! } return TRUE; } return FALSE; } /** * gets the functions for the given hook * @param string $hook * @return mixed */ public static function get_action($hook) { $hook=mb_strtolower($hook,CHARSET); return (isset(self::$actions[$hook]))? self::$actions[$hook]:FALSE; } /** * check exists the functions for the given hook * @param string $hook * @return boolean */ public static function exists_action($hook) { $hook=mb_strtolower($hook,CHARSET); return (isset(self::$actions[$hook]))? TRUE:FALSE; } } /** * Hooks Shortcuts not in class */ function add_action($hook,$function) { return Hook::add_action($hook,$function); } function do_action($hook) { return Hook::do_action($hook); } //添加钩子 Hook::add_action('unique_name_hook','some_class::hook_test'); //或使用快捷函数添加钩子:add_action('unique_name_hook','other_class::hello');add_action('unique_name_hook','some_public_function'); //执行钩子do_action('unique_name_hook');//也可以使用 Hook::do_action();
0 0
- 钩子机制
- 创建JavaScript钩子机制
- windows中的钩子机制
- JavaScript 钩子机制
- HOOK钩子机制
- 钩子机制(hook)
- HOOK钩子机制
- 消息机制 钩子+回调
- 钩子(HOOK)机制的使用
- 钩子(HOOK)机制的使用
- 钩子(HOOK)机制的使用
- 使用钩子机制监控输入法
- HOOK钩子机制学习笔记
- 使用钩子机制监控输入法
- [转载]Windows HOOK(钩子)机制
- js中的钩子机制(hook)
- HOOK钩子机制学习笔记(4) - 钩子函数说明
- HOOK钩子机制学习笔记(4) - 钩子函数说明
- Groovy创建和解析json
- Java并发编程:Callable、Future和FutureTask
- C++的深拷贝与浅拷贝
- (译)A*算法寻路-新手入门
- Altium Designer 参数配置
- 钩子机制
- 理解sh -e/bash -e
- linux解压中文zip乱码
- Android 内存优化笔记
- strstr()函数
- openresty操作redis订阅者
- CXF+Spring发布webservice
- ofono发送GSM短信流程
- 关于SHA1