patryknamyslak / patflow
An event driven dispatch system for php
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:paravel-library
pkg:composer/patryknamyslak/patflow
README
Demo:
TestEvent:
namespace PatrykNamyslak\PatFlow\Demo; use PatrykNamyslak\PatFlow\Blueprints\Event; class TestEvent extends Event{ // Add a custom property to capture extra data to then later use in the Listener::handle() method public function __construct(protected string $message){ parent::__construct(); } }
TestListener:
namespace PatrykNamyslak\PatFlow\Demo; use PatrykNamyslak\PatFlow\Blueprints\Event; use PatrykNamyslak\PatFlow\Blueprints\Listener; class TestListener extends Listener{ public function handle(Event $event): void{ echo "Event triggered! at: {$event->timestamp} and a message was left here it is: {$event->message}"; } }
TestServiceProvider:
namespace PatrykNamyslak\PatFlow\Demo; use PatrykNamyslak\PatFlow\Blueprints\ServiceProvider; class TestServiceProvider extends ServiceProvider{ // Define your event => array of listeners that are triggered on event fire public array $listen = [ TestEvent::class => [TestListener::class], ]; }
Usage:
use PatrykNamyslak\PatFlow\Demo\TestEvent; use PatrykNamyslak\PatFlow\Demo\TestServiceProvider; $dispatcher = new Dispatcher(); $serviceProvider = new TestServiceProvider(dispatcher: $dispatcher); $serviceProvider->register(); $dispatcher->dispatch(new TestEvent(message: "Greetings My friend"));
OUTPUT: Event triggered! at: 1770753871.8842 and a message was left here it is: Greetings My friend