KumbiaPHP  beta2
Framework PHP
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Páginas
event.php
Ir a la documentación de este archivo.
1 <?php
23 require CORE_PATH . 'libs/event/hook.php';
24 
31 class Event
32 {
33 
39  public static $data = null;
45  protected static $_events = array();
46 
53  public static function hasHandler($event)
54  {
55  return isset(self::$_events[$event]) && count(self::$_events[$event]);
56  }
57 
64  public static function bind($event, $handler)
65  {
66  if (!isset(self::$_events[$event])) {
67  self::$_events[$event] = array();
68  }
69  self::$_events[$event][] = $handler;
70  }
71 
79  public static function before($event, $handler1, $handler2)
80  {
81  if (!isset(self::$_events[$event])) {
82  self::$_events[$event] = array();
83  }
84  $i = array_search($handler1, self::$_events[$event]);
85  if ($i === false) {
86  self::$_events[$event][] = $handler2;
87  } else {
88  array_splice(self::$_events[$event], $i, 0, $handler2);
89  }
90  }
91 
99  public static function after($event, $handler1, $handler2)
100  {
101  if (!isset(self::$_events[$event])) {
102  self::$_events[$event] = array();
103  }
104  $i = array_search($handler1, self::$_events[$event]);
105  if ($i === false) {
106  self::$_events[$event][] = $handler2;
107  } else {
108  array_splice(self::$_events[$event], $i + 1, 0, $handler2);
109  }
110  }
111 
118  public static function unbind($event, $handler=false)
119  {
120  if ($handler && isset(self::$_events[$event])) {
121  $i = array_search($handler, self::$_events[$event]);
122  if ($i !== false)
123  unset(self::$_events[$event][$i]);
124  } else {
125  self::$_events[$event] = array();
126  }
127  }
128 
136  public static function replace($event, $handler1, $handler2)
137  {
138  if (isset(self::$_events[$event])) {
139  $i = array_search($handler1, self::$_events[$event]);
140  if ($i !== false) {
141  self::$_events[$event][$i] = $handler2;
142  return true;
143  }
144  }
145  return false;
146  }
147 
155  public static function trigger($event, $args = array())
156  {
157  $value = false;
158  if (isset(self::$_events[$event])) {
159  foreach (self::$_events[$event] as $handler) {
160  $value = call_user_func_array($handler, $args);
161  }
162  }
163 
164  self::$data = null;
165  return $value;
166  }
167 
168 }