Final Class Yiisoft\Yii\Event\ListenerCollectionFactory
| Inheritance | Yiisoft\Yii\Event\ListenerCollectionFactory |
|---|
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Yii\Event\ListenerCollectionFactory | |
| create() | Yiisoft\Yii\Event\ListenerCollectionFactory |
Method Details
| 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,
) {
}
| 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;
}
Signup or Login in order to comment.