00001 <?php
00002
00015
00016
00017
00018 class HookRegistry {
00022 function &getHooks() {
00023 static $hooks = array();
00024 return $hooks;
00025 }
00026
00033 function setHooks($hookName, $hooks) {
00034 $hooks = &HookRegistry::getHooks();
00035 $hooks[$hookName] =& $hooks;
00036 }
00037
00042 function clear($hookName) {
00043 $hooks = &HookRegistry::getHooks();
00044 unset($hooks[$hookName]);
00045 return $hooks;
00046 }
00047
00053 function register($hookName, $callback) {
00054 $hooks = &HookRegistry::getHooks();
00055 if (!isset($hooks[$hookName])) {
00056 $hooks[$hookName] = array();
00057 }
00058 $hooks[$hookName][] =& $callback;
00059 }
00060
00072 function call($hookName, $args = null) {
00073 $hooks = &HookRegistry::getHooks();
00074 if (!isset($hooks[$hookName])) {
00075 return false;
00076 }
00077
00078 foreach ($hooks[$hookName] as $hook) {
00079 if ($result = call_user_func($hook, $hookName, $args)) {
00080 break;
00081 }
00082 }
00083
00084 return $result;
00085 }
00086 }
00087
00088 ?>