1. Go to this page and download the library: Download memran/marwa-event 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/ */
memran / marwa-event example snippets
use Marwa\Event\Bus\EventBus;
use Marwa\Event\Core\EventDispatcher;
use Marwa\Event\Core\ListenerProvider;
use Marwa\Event\Resolver\ListenerResolver;
$resolver = new ListenerResolver();
$provider = new ListenerProvider($resolver);
$dispatcher = new EventDispatcher($provider);
$bus = new EventBus($provider, $dispatcher);
$bus->listen(UserRegistered::class, SendWelcomeMail::class, 100);
$bus->listen(UserRegistered::class, [AuditListener::class, 'handle'], 50);
$bus->listen(UserRegistered::class, static function (UserRegistered $event): void {
// metrics or notifications
}, 10);
$bus->dispatch(new UserRegistered('[email protected]'));
use Marwa\Event\Contracts\StoppableEvent;
final class UserRegistered extends StoppableEvent
{
public function __construct(public string $email) {}
}
use Marwa\Event\Contracts\Subscriber;
final class UserSubscriber implements Subscriber
{
public static function getSubscribedEvents(): array
{
return [
UserRegistered::class => [
['sendWelcome', 100],
['audit', 50],
],
];
}
public function sendWelcome(UserRegistered $event): void {}
public function audit(UserRegistered $event): void {}
}
$bus->subscribe(new UserSubscriber());
interface DomainEvent {}
class BaseOrderEvent implements DomainEvent {}
final class OrderPlaced extends BaseOrderEvent {}
$bus->listen(DomainEvent::class, LogDomainEvent::class, 100);
$bus->listen(BaseOrderEvent::class, UpdateReadModel::class, 50);
$bus->listen(OrderPlaced::class, SendOrderEmail::class, 10);
$bus->dispatch(new OrderPlaced());
use Marwa\Event\Bus\EventBus;
use Marwa\Event\Core\EventDispatcher;
use Marwa\Event\Core\ListenerProvider;
use Marwa\Event\Resolver\ListenerResolver;
$resolver = new ListenerResolver($container);
$provider = new ListenerProvider($resolver);
$dispatcher = new EventDispatcher($provider);
$bus = new EventBus($provider, $dispatcher, $container);
$bus->listen(UserRegistered::class, SendWelcomeMail::class);
$bus->subscribe(UserSubscriber::class);
$dispatcher = new EventDispatcher($provider, swallowExceptions: true);
$bus = new EventBus($provider, $dispatcher);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.