hirethunk/verbs
Verbs is a Laravel-friendly event sourcing package for PHP artisans that keeps the benefits of event sourcing while cutting boilerplate and jargon. Model behavior as verbs, record events, and build projections with a clean, approachable API.
commitBeforeRender).verb_events and verb_snapshots tables (migrations provided).bits (for IDs), livewire (for real-time commits).last_event_id); conflicts require retry logic.boot, apply, fire) can be opaque. Logging middleware recommended.State classes).Wormhole for time manipulation).verb() helper in Livewire components to commit events before render.EventStore interface.Wormhole for time travel and EventStore mocks.Verbs::replay().Order).State class:
class OrderState extends State
{
public function place(OrderPlaced $event) { /* ... */ }
}
Verbs::commit() instead of Model::save().created_at/updated_at in favor of event timestamps.Verbs::fire() alongside existing event emitters.State classes incrementally.composer require hirethunk/verbs.php artisan vendor:publish --tag=verbs-config.php artisan migrate.php artisan verbs:state Order.State classes (e.g., place(), cancel()).Wormhole.Verbs::snapshot().bits (for IDs) and Laravel version compatibility.json_encode pitfalls).Verbs::debug() to inspect event lifecycles.verb.* logging channel for replay issues.verb_snapshots.occurred_at for time-range queries.last_event_id) may require retries under high load.verb_events table is sharded if using multi-tenant setups.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Event serialization error | Data corruption | Validate events with isValid() checks. |
| Replay race condition | Inconsistent state | Use Wormhole for deterministic replays. |
| Snapshot store overload | Slow reads | Adjust snapshot frequency or use projections. |
| Queue worker crash | Unprocessed events | Implement dead-letter queues for events. |
| Database connection loss | Event loss | Use transactions with beginTransaction(). |
| Schema migration failure | Broken event loading | Backup verb_events before migrations. |
boot, apply, fire), state vs. eventsHow can I help you explore Laravel packages today?