/** * 提供hook_invoke钩子 * ModuleName_HOOK_invoke * @return array */ function invoke($hook) { static $hooks = array(); if (!isset($hooks[$hook])) { $hooks[$hook] = array(); $modules = GearmanKernel::getModules(); foreach ($modules as $module => $namespace) { if (function_exists($namespace . '\\' . $module . '_' . $hook . '_invoke')) { $hooks[$hook][] = $namespace . '\\' . $module . '_' . $hook . '_invoke'; } if (function_exists($module . '_' . $hook . '_invoke')) { $hooks[$hook][] = $module . '_' . $hook . '_invoke'; } } } $args = func_get_args(); unset($args[0]); $return = array(); foreach ($hooks[$hook] as $function) { $result = call_user_func_array($function, $args); if (isset($result) && is_array($result)) { $return = array_merge_recursive($return, $result); } elseif (isset($result)) { $return[] = $result; } } return $return; }