0 follower

Final Class Yiisoft\Yii\Event\ListenerCollectionFactory

InheritanceYiisoft\Yii\Event\ListenerCollectionFactory

Method Details

Hide inherited methods

__construct() public method

public mixed __construct ( \Yiisoft\Injector\Injector $injector, Yiisoft\Yii\Event\CallableFactory $callableFactory )
$injector \Yiisoft\Injector\Injector
$callableFactory Yiisoft\Yii\Event\CallableFactory

                public function __construct(
    private readonly Injector $injector,
    private readonly CallableFactory $callableFactory,
) {
}

            
create() public method

public \Yiisoft\EventDispatcher\Provider\ListenerCollection create ( array $eventListeners )
$eventListeners array

Event listener list in format ['eventName1' => [$listener1, $listener2, ...]]

                public function create(array $eventListeners): ListenerCollection
{
    $listenerCollection = new ListenerCollection();
    foreach ($eventListeners as $eventName => $listeners) {
        if (!is_string($eventName)) {
            throw new InvalidEventConfigurationFormatException(
                'Incorrect event listener format. Format with event name must be used.'
            );
        }
        if (!is_iterable($listeners)) {
            $type = get_debug_type($listeners);
            throw new InvalidEventConfigurationFormatException(
                "Event listeners for $eventName must be an iterable, $type given."
            );
        }
        foreach ($listeners as $callable) {
            $listener =
                fn (object $event): mixed => $this->injector->invoke(
                    $this->callableFactory->create($callable),
                    [$event]
                );
            $listenerCollection = $listenerCollection->add($listener, $eventName);
        }
    }
    return $listenerCollection;
}