public static function listen($event, $callback)
{
if (is_array($event)) {
foreach ($event as $e) {
self::listen($e, $callback);
}
return;
}
if ($event !== '*' and !self::eventName($event)) {
throw new \InvalidArgumentException('Event "' . $event . '" is not a valid event');
}
if (!isset(self::$events[$event])) {
self::$events[$event] = array();
}
self::$events[$event][] = $callback;
}