1. Go to this page and download the library: Download componenta/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/ */
componenta / event example snippets
use Componenta\Event\EventDispatcher;
use Componenta\Event\Provider\ListenerProvider;
$provider = new ListenerProvider();
$provider->addListener(UserRegistered::class, fn(UserRegistered $e) => sendWelcomeEmail($e->user));
$dispatcher = new EventDispatcher($provider);
$dispatcher->dispatch(new UserRegistered($user));
$dispatcher = new EventDispatcher($provider);
$event = $dispatcher->dispatch(new OrderPlaced(...)); // returns the event
$fork = $dispatcher->withProvider($otherProvider); // new instance
use Componenta\Event\Provider\PrioritizedProvider;
use Componenta\Event\Provider\SortMode;
$provider = new PrioritizedProvider(mode: SortMode::DESC); // default
$provider->addListener(CommentPosted::class, $auditHandler, priority: 100);
$provider->addListener(CommentPosted::class, $defaultHandler); // 0 by default
use Componenta\Event\Provider\PrioritizedListenerInterface;
final class LogAuditEvent implements PrioritizedListenerInterface
{
public int $priority { get => 1000; }
public function __invoke(AuditEvent $event): void { /* ... */ }
}
$provider->addListener(AuditEvent::class, new LogAuditEvent()); // priority 1000 from interface
use Componenta\Event\Provider\CompositeProvider;
$composite = new CompositeProvider([$coreProvider, $moduleProvider]);
$composite->add($pluginProvider);
$dispatcher = new EventDispatcher($composite);
$provider->addListeners([
PostPublished::class => [$sendDigest, $updateIndex],
CommentPosted::class => $notifyAuthor,
]);
// Prioritized: [callable, int] pairs or bare callables within one group
$prio->addListeners([
AuditEvent::class => [
[$rotateLogs, 100],
[$persistAudit, 50],
$defaultLogger, // priority 0 or from interface
],
]);
$off = null;
$off = $provider->addListener(Booted::class, function (Booted $e) use (&$off) {
$off(); // unsubscribe before running (re-entrancy safe)
initialize($e);
});