PHP code example of olvlvl / delayed-event-dispatcher

1. Go to this page and download the library: Download olvlvl/delayed-event-dispatcher library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

olvlvl / delayed-event-dispatcher example snippets




use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$delayedEventDispatcher = new DelayedEventDispatcher($eventDispatcher); 



use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$disabledDelayedEventDispatcher = new DelayedEventDispatcher($eventDispatcher, true);



use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$disabledDelayedEventDispatcher = new DelayedEventDispatcher(
    $eventDispatcher, 
    filter_var(getenv('MYAPP_DISABLE_DELAYED_EVENT_DISPATCHER'), FILTER_VALIDATE_BOOLEAN)
);



use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var DelayedEventDispatcher $delayedEventDispatcher */

$delayedEventDispatcher->dispatch($event1);
$delayedEventDispatcher->dispatch($event2);
$delayedEventDispatcher->flush();



use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var \PhpAmqpLib\Channel\AMQPChannel $channel */
/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$messagingDelayedEventDispatcher = new DelayedEventDispatcher(
    $eventDispatcher, 
    true,
    null,
    null,
    function (object $event) use ($channel) {
        $channel->basic_publish(json_encode($event), 'my_exchange', $event->getName());
    }
);



use olvlvl\DelayedEventDispatcher\Delayable;
use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

$arbiter = function (object $event) {
    return $event instanceof Delayable;
};

/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$disabledDelayedEventDispatcher = new DelayedEventDispatcher($eventDispatcher, false, $arbiter);



use olvlvl\DelayedEventDispatcher\DelayedEventDispatcher;

/* @var \Psr\Log\LoggerInterface $logger */

$exceptionHandler = function (\Throwable $error, object $event) use ($logger) {
    // The exception is recovered, we log it to fix it later
    $logger->danger($error);
};

/* @var \Psr\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$disabledDelayedEventDispatcher = new DelayedEventDispatcher($eventDispatcher, false, null, $exceptionHandler);