KumbiaPHP beta2-dev
Framework PHP en español
|
00001 <?php 00023 // @see Hook 00024 require CORE_PATH . 'libs/event/hook.php'; 00025 00026 class Event 00027 { 00033 public static $data = null; 00034 00040 protected static $_events = array(); 00041 00048 public static function hasHandler($event) 00049 { 00050 return isset(self::$_events[$event]) && count(self::$_events[$event]); 00051 } 00052 00059 public static function bind($event, $handler) 00060 { 00061 if(!isset(self::$_events[$event])) { 00062 self::$_events[$event] = array(); 00063 } 00064 self::$_events[$event][] = $handler; 00065 } 00066 00074 public static function before($event, $handler1, $handler2) 00075 { 00076 if(!isset(self::$_events[$event])) { 00077 self::$_events[$event] = array(); 00078 } 00079 $i = array_search($handler1, self::$_events[$event]); 00080 if($i===false) { 00081 self::$_events[$event][] = $handler2; 00082 } else { 00083 Util::array_insert(self::$_events[$event], $i, $handler2); 00084 } 00085 } 00086 00094 public static function after($event, $handler1, $handler2) 00095 { 00096 if(!isset(self::$_events[$event])) { 00097 self::$_events[$event] = array(); 00098 } 00099 $i = array_search($handler1, self::$_events[$event]); 00100 if($i===false) { 00101 self::$_events[$event][] = $handler2; 00102 } else { 00103 Util::array_insert(self::$_events[$event], $i+1, $handler2); 00104 } 00105 } 00106 00113 public static function unbind($event, $handler=false) 00114 { 00115 if($handler && isset(self::$_events[$event])) { 00116 $i = array_search($handler, self::$_events[$event]); 00117 if($i!==false) 00118 unset(self::$_events[$event][$i]); 00119 } else { 00120 self::$_events[$event] = array(); 00121 } 00122 } 00123 00131 public static function replace($event, $handler1, $handler2) 00132 { 00133 if(isset(self::$_events[$event])) { 00134 $i = array_search($handler1, self::$_events[$event]); 00135 if($i!==false) { 00136 self::$_events[$event][$i] = $handler2; 00137 return true; 00138 } 00139 } 00140 return false; 00141 } 00142 00150 public static function trigger($event, $args = array()) 00151 { 00152 $value = false; 00153 if(isset(self::$_events[$event])) { 00154 foreach(self::$_events[$event] as $handler) { 00155 $value = call_user_func_array($handler, $args); 00156 } 00157 } 00158 00159 self::$data = null; 00160 return $value; 00161 } 00162 }