Weave 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

Event Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • What runtime is actually in scope for this service — Laravel, webman, or a mixed estate? This single answer determines whether the package is viable or irrelevant.
  • Is the event flow intra-process (decoupling modules in one service) or cross-service (needs a broker, retries, delivery guarantees)? This package only addresses the former.
  • Do we need asynchronous/queued listeners, ordering guarantees, or at-least-once delivery? None are provided out of the box.
  • Has anyone verified compatibility against the webman version we would deploy?
  • What is the internal alternative — Laravel events, Symfony EventDispatcher, or a small in-house dispatcher — and what would that cost versus adopting a 9-star plugin?

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.

Integration Approach

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.

  1. Confirm the runtime decision (Laravel vs. webman) — gate for everything else.
  2. Timeboxed spike: one webman service, two events, two listeners, including an exception-throwing listener to observe failure behavior.
  3. Audit the source (~a day) and record the fork/vendor decision and owner.
  4. Introduce the EventBus interface and register the plugin behind it.
  5. Add contract tests for listener registration, dispatch ordering, and exception isolation before any production traffic.

Operational Impact

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.

  • State leakage across requests — long-lived workers retain listener/static state; the classic webman footgun and the most likely production incident.
  • Uncaught listener exceptions surfacing into the request path and failing user-facing calls.
  • Silent no-ops — a listener that fails to register produces no error, just missing behavior; hard to detect without explicit tests.
  • Event storms / ordering — synchronous fan-out with no ordering guarantees or backpressure.
  • Version drift — incompatibility with future webman releases discovered at upgrade time.

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.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core