event.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php namespace Laravel;
  2. class Event {
  3. /**
  4. * All of the registered events.
  5. *
  6. * @var array
  7. */
  8. public static $events = array();
  9. /**
  10. * Determine if an event has any registered listeners.
  11. *
  12. * @param string $event
  13. * @return bool
  14. */
  15. public static function listeners($event)
  16. {
  17. return isset(static::$events[$event]);
  18. }
  19. /**
  20. * Register a callback for a given event.
  21. *
  22. * <code>
  23. * // Register a callback for the "start" event
  24. * Event::listen('start', function() {return 'Started!';});
  25. *
  26. * // Register an object instance callback for the given event
  27. * Event::listen('event', array($object, 'method'));
  28. * </code>
  29. *
  30. * @param string $event
  31. * @param mixed $callback
  32. * @return void
  33. */
  34. public static function listen($event, $callback)
  35. {
  36. static::$events[$event][] = $callback;
  37. }
  38. /**
  39. * Fire an event so that all listeners are called.
  40. *
  41. * <code>
  42. * // Fire the "start" event
  43. * $responses = Event::fire('start');
  44. *
  45. * // Fire the "start" event passing an array of parameters
  46. * $responses = Event::fire('start', array('Laravel', 'Framework'));
  47. * </code>
  48. *
  49. * @param string $event
  50. * @param array $parameters
  51. * @return array
  52. */
  53. public static function fire($event, $parameters = array())
  54. {
  55. $responses = array();
  56. if (static::listeners($event))
  57. {
  58. foreach (static::$events[$event] as $callback)
  59. {
  60. $responses[] = call_user_func_array($callback, $parameters);
  61. }
  62. }
  63. return $responses;
  64. }
  65. }