You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
516 B
28 lines
516 B
<?php |
|
|
|
namespace core\dispatchers; |
|
|
|
use core\jobs\AsyncEventJob; |
|
use yii\queue\Queue; |
|
|
|
class AsyncEventDispatcher implements EventDispatcher |
|
{ |
|
private $queue; |
|
|
|
public function __construct(Queue $queue) |
|
{ |
|
$this->queue = $queue; |
|
} |
|
|
|
public function dispatchAll(array $events): void |
|
{ |
|
foreach ($events as $event) { |
|
$this->dispatch($event); |
|
} |
|
} |
|
|
|
public function dispatch($event): void |
|
{ |
|
$this->queue->push(new AsyncEventJob($event)); |
|
} |
|
} |