custom/plugins/CrswCleverReachOfficial/src/Core/Infrastructure/Utility/Events/EventEmitter.php line 37

Open in your IDE?
  1. <?php
  2. namespace Crsw\CleverReachOfficial\Core\Infrastructure\Utility\Events;
  3. /**
  4.  * Class EventEmitter.
  5.  *
  6.  * @package Crsw\CleverReachOfficial\Core\Infrastructure\Utility\Events
  7.  */
  8. abstract class EventEmitter
  9. {
  10.     /**
  11.      * Event handlers array. Key is Fully qualified class name of desired event
  12.      * and value is array of callbacks to invoke when event occurs.
  13.      *
  14.      * @var array
  15.      */
  16.     protected $handlers = array();
  17.     /**
  18.      * Registers event handler for a given event.
  19.      *
  20.      * @param string $eventClass Fully qualified class name of desired event.
  21.      * @param callable $handler Callback to invoke when event occurs.
  22.      *      Observable will pass observed event instance as a handler parameter.
  23.      */
  24.     public function when($eventClass$handler)
  25.     {
  26.         $this->handlers[$eventClass][] = $handler;
  27.     }
  28.     /**
  29.      * Fires requested event by calling all its registered handlers.
  30.      *
  31.      * @param \Crsw\CleverReachOfficial\Core\Infrastructure\Utility\Events\Event $event Event to fire.
  32.      */
  33.     protected function fire(Event $event)
  34.     {
  35.         $eventClass get_class($event);
  36.         if (!empty($this->handlers[$eventClass])) {
  37.             foreach ($this->handlers[$eventClass] as $handler) {
  38.                 call_user_func($handler$event);
  39.             }
  40.         }
  41.     }
  42. }