KumbiaPHP beta2-dev
Framework PHP en español
event.php
Ir a la documentación de este archivo.
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 }
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Enumeraciones