MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/artinside/www/lhh/vendor/tiagosampaio/event-observer/src/EventDispatcher.php
<?php

declare(strict_types = 1);

namespace TiagoSampaio\EventObserver;

use TiagoSampaio\EventObserver\Observer\ObserverInterface;

/**
 * Class EventDispatcher
 *
 * @package TiagoSampaio\Event
 */
class EventDispatcher implements EventDispatcherInterface
{
    /**
     * @var array
     */
    private $observers = [];
    
    /**
     * @var EventFactory
     */
    private $eventFactory;
    
    /**
     * EventDispatcher constructor.
     */
    public function __construct()
    {
        $this->eventFactory = new EventFactory();
    }
    
    /**
     * {@inheritdoc}
     */
    public function dispatch($eventName, array $eventData = [])
    {
        /** @var Observer\ObserverInterface $observer */
        foreach ($this->observers as $observer) {
            /** @var EventInterface $data */
            $event = $this->eventFactory->create();
            $event->setEvent($eventName, (array) $eventData);
            $observer->execute($event);
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function addObserver(ObserverInterface $observer)
    {
        $this->observers[] = $observer;
        return $this;
    }
}