Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Events Laravel Package

spiral/events

Spiral Events provides a lightweight event dispatcher for Spiral/PHP apps. Define events and listeners, publish events, and handle them synchronously with clean integration into the framework’s container and application lifecycle.

View on GitHub
Deep Wiki
Context7

Getting Started

This package provides a PSR-14-compliant event dispatcher for Spiral Framework applications. Begin by installing via Composer (composer require spiral/events) and enabling the Spiral\Events\Events bootstrapper in your app’s bootstrap chain (typically via app.php config). The first use case is dispatching domain events—e.g., after a user registers—by creating an event class (e.g., UserRegistered) and calling $dispatcher->dispatch(new UserRegistered($user)).

Implementation Patterns

  • Event Classes: Define simple DTOs (e.g., class UserRegistered { public function __construct(public User $user) {} }). Use typed properties and avoid business logic in events.
  • Event Listeners: Implement __invoke() methods (recommended) or handle() in listener classes, or use closures in newer PHP versions.
  • Listener Registration: Register listeners via config/bootloaders.php (Spiral-specific) or bind them in App::boot() using Events::listen(new UserRegistered, UserRegisteredListener::class).
  • Bulk Dispatching: Prefer dispatching a single event with multiple listeners over manual loops; this decouples concerns and improves testability.

Gotchas and Tips

  • Listening Order: Listeners are executed in registration order unless you implement Spiral\Events\ListenerPriorityInterface—use getPriority() to control execution sequence.
  • Circular Dependencies: Avoid dispatching new events from listeners if the listener itself may be triggered by that new event (causing recursion or infinite loops).
  • Testing: Mock EventDispatcherInterface or use TestingEventDispatcher in unit tests; Spiral’s TestCase includes helper methods for event assertions.
  • Framework Integration: When using Spiral’s Bootloader pattern, override boot() to register listeners programmatically instead of relying solely on config files.
  • Performance: Avoid heavy work in listeners for high-frequency events; consider queuing (e.g., with spiral/jobs) for non-critical tasks to keep dispatch latency low.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport
twbs/bootstrap4
php-http/client-implementation
phpcr/phpcr-implementation
cucumber/gherkin-monorepo
haydenpierce/class-finder
psr/simple-cache-implementation