webman/event
Lightweight event dispatcher for the webman framework. Register listeners, dispatch events, and organize event-driven logic with simple configuration. A small utility for decoupling components and adding hooks in webman applications.
Architecture fit. webman/event is not a Laravel package; it is a plugin for the webman framework, a Workerman/EventLoop-based, long-running PHP application server. It provides a thin, config-driven event/listener dispatcher (Event::emit() / listener registration via config/plugin/webman/event/event.php). For a Laravel codebase, architecture fit is effectively zero — Laravel already ships Illuminate\Events\Dispatcher with service-provider registration, queued listeners, and model events. Adopting this package only makes sense if the target runtime is webman (or if we are deliberately piloting webman for a performance-sensitive service). Do not treat it as a generic PSR-14 event bus for a Laravel monolith.
Integration feasibility. Composer-installable and MIT-licensed, but the "integration" is the webman plugin bootstrap, not a framework-agnostic service provider. Bringing it into Laravel would require rewriting registration and dispatch, at which point we have built a worse version of Laravel's own dispatcher. Within webman, feasibility is high — the plugin is small (a handful of classes) and hooking it into a fresh webman service is a scaffold-level task.
Technical risk. The dominant risk is provenance, not complexity. Nine stars, zero dependents, and a last release of 2023-12-04 mean there is no ecosystem signal, no downstream validation, and no evidence of compatibility with current webman releases (webman 2.x). The code surface is small enough to audit in under a day and, if necessary, vendor/fork — which is the correct mitigation. Secondary risks are runtime-model risks: listeners execute in-process inside a long-lived worker, so blocking listeners, static state, or uncaught exceptions have outsized blast radius compared to a per-request FPM model.
Key questions for the team.
TPM read on the scores. An overall score of 0.045 with an opportunity score of ~35.5 describes a niche, low-adoption, unproven component. That is not disqualifying for a small internal utility, but it is disqualifying as a strategic dependency.
Stack fit. Fit is binary: inside a webman service, yes; inside Laravel, no. If the surrounding estate is Laravel/PHP-FPM, the correct integration is to use Laravel's native event system and not introduce a second, parallel event mechanism — dual dispatchers are a long-term maintenance and observability tax with no upside.
Migration path. If webman is being evaluated for a performance-critical slice (high-concurrency I/O, websockets, long-poll), adopt this plugin at the scaffold stage of that new service rather than retrofitting it. Keep the plugin confined to that service boundary. Wrap all usage behind a narrow internal interface (e.g. App\Contracts\EventBus with dispatch() and listen()) so the underlying implementation can be swapped to Symfony's dispatcher or an in-house registry without touching domain code. This abstraction is the single highest-leverage decision here and costs roughly a day.
Compatibility. Verify PHP version constraint and the declared webman framework constraint in composer.json; the 2023-12 release predates webman 2.x and may pin ^1.x. Pin the plugin version, run a compatibility spike against the exact webman version we intend to ship, and treat any required patch as a fork we own rather than waiting on upstream.
Sequencing.
EventBus interface and register the plugin behind it.Maintenance. Low code volume, high ownership ambiguity. With no release since December 2023 and zero dependents, assume de facto unmaintained: budget for a named internal owner and a "we can patch it ourselves" commitment. The good news is the fork cost is trivial; the bad news is that no one else will notice or fix breakage for us.
Support. MIT, no vendor, no commercial backing, community support limited to webman's own channels. Escalation path is "read the source." Acceptable for an internal utility, unacceptable for anything on a revenue-critical path without the fork plan in place.
Scaling. Dispatch is in-process and synchronous. Listener latency is request latency — a slow listener directly degrades throughput in a long-running worker, and unlike FPM there is no per-request teardown to bound the damage. For anything I/O-bound, pair with a queue (webman/redis-queue or equivalent) and keep listeners thin. Horizontal scaling is a property of the webman worker pool and the broker, not of this plugin; the plugin itself is not a scaling concern but also contributes nothing to it.
Failure modes.
Ramp-up. The plugin itself is hours to learn. The real ramp-up cost is the webman runtime model — Workerman lifecycle, plugin config conventions, worker restart semantics, memory behavior over long uptimes — which most Laravel-experienced engineers do not have. Estimate 1–2 days for a competent PHP engineer to be productive, plus the audit day. If the team is Laravel-native and webman is a one-off, factor in knowledge concentration risk: one or two people will hold the operational context.
Recommendation. Treat webman/event as an acceptable tactical, single-service utility behind an internal abstraction, contingent on the runtime actually being webman. Reject it as a platform-level or cross-cutting dependency. If the estate is Laravel, close the evaluation and use the framework's native events.
How can I help you explore Laravel packages today?