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

Command Bundle Laravel Package

jms/command-bundle

Symfony bundle that integrates a command bus for dispatching command objects to service-based handlers. It adds middleware support for cross-cutting concerns and helps organize business operations into explicit, decoupled, and testable commands.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: none for a Laravel codebase. jms/command-bundle is a Symfony2 bundle, not a Laravel package. It integrates through Symfony's AppKernel::registerBundles(), the Symfony DI container, and the console.command tag. Laravel has no bundle concept — it uses service providers, the Illuminate\Console\Kernel, and Artisan command registration. There is no adapter layer that makes a Symfony2 bundle loadable in Laravel; the only realistic use would be copying individual command classes out of the bundle and rewriting them as Artisan commands.

Integration feasibility: near zero as a dependency.

  • Composer will almost certainly refuse to resolve it alongside a modern Laravel app. The bundle targets Symfony 2.x-era symfony/* packages (2.0–2.8), while Laravel 9/10/11 depend on Symfony 6/7 components. These requirements conflict transitively, so even --dev installation is likely blocked.
  • If installed anyway (e.g., --ignore-platform-reqs in a legacy tree), the code targets PHP 5.x idioms and is unlikely to run cleanly on PHP 8.1+, which is the supported range for current Laravel.
  • The bundle's value is a handful of developer-convenience console commands. That is a very small surface area to justify any integration work.

Technical risk: high, and concentrated in the "is this even alive" question.

  • Symfony 2.8 reached end of life in November 2018. Any bundle pinned to that generation carries unpatched dependency risk and no security backport path.
  • 44 stars and 0 dependents on Packagist is a strong abandonment signal — nothing in the ecosystem is exercising this code, so there is no de facto compatibility testing and no downstream bug reporting.
  • A score of 0.5 reflects that signal accurately. We should treat the package as unmaintained until proven otherwise, not as a live dependency.

Key questions to resolve before any further evaluation spend:

  1. What is the actual intent — adopting the package, or harvesting the command logic? If the latter, which commands specifically, and are any of them not already trivial in Artisan?
  2. What is the last commit date and the highest Symfony/PHP version the test matrix covers? Is there a maintained fork?
  3. Can we enumerate the exact command inventory and map each to a Laravel-native equivalent? (A large fraction of "useful dev commands" in this era are now built into Symfony's own console or trivially reproduced with Artisan.)
  4. Is there a business requirement that cannot be met with php artisan make:*, custom Artisan commands, or existing maintained tooling?

Verdict: recommend reject as a dependency. Re-evaluate only as a source of inspiration — a read-only reference for command implementations worth reimplementing natively.

Integration Approach

Stack fit: not applicable. The target stack is Laravel on PHP 8.1+ with Symfony 6/7 components under the hood. The package assumes Symfony 2.x full-stack. These are different frameworks sharing a vendor namespace, not different versions of the same thing.

Migration path. Do not attempt a bundle-to-provider shim. The workable path is extraction, in this order:

  1. Audit — read the bundle's Command/ directory and list every command, its inputs, and its side effects. This is a one-to-few-hour exercise given the package size.
  2. Triage — for each command, classify as already covered by Artisan/Symfony console, trivially reproducible (under ~50 lines), or genuinely non-trivial logic worth porting.
  3. Reimplement — port only the third bucket, as Illuminate\Console\Command subclasses registered in a service provider, with tests. Preserve the original licence/attribution headers per the repo's terms.
  4. Discard — drop the Composer dependency entirely; it never enters composer.json.

Compatibility. Assume none out of the box: PHP 5-era syntax, Symfony 2 DI semantics (services.yml with 2.x schema), and likely PSR-0 autoloading conventions. Any port is a rewrite against modern PHP, not a compatibility shim.

Sequencing. If the team insists on pursuing it, timebox strictly: a one-day spike to produce the command inventory and a per-command disposition table. Gate any porting work behind that table — do not schedule implementation before triage. The spike should run in parallel with, not ahead of, evaluating the Artisan-native alternative, because the likely outcome is that the alternative wins on effort alone.

Operational Impact

Maintenance. Owning a vendored copy of unmaintained code transfers 100% of maintenance to us with no upstream to rebase against. That is acceptable for a small, stable, well-understood utility command; it is not acceptable for anything load-bearing. Ported commands should be treated as first-class internal code with tests and an owner, not as "third-party glue."

Support. Effectively zero. No active maintainer, no issue triage on a Symfony2-era bundle, no security advisory channel we can subscribe to. Any incident is ours to diagnose from source. Escalate this explicitly to whoever owns the dependency-approval policy — this is precisely the class of package that should fail a supply-chain gate.

Scaling. The commands are developer-facing tooling, so production scaling is a non-issue provided nothing leaks into the runtime path. The real scaling concern is organizational: every developer who learns a bespoke ported command must also learn that it is a fork with no upstream docs. Prefer Artisan-native equivalents that new hires already know.

Failure modes.

  • Composer resolution failure on install — most likely outcome, blocks the whole approach early and cheaply.
  • Silent runtime breakage on PHP 8 if forced in — deprecations and type errors surfacing at command execution time, in dev environments, where they erode trust in the toolchain.
  • Divergence drift — the vendored copy diverges from anything upstream and from the team's own conventions, becoming an unowned orphan.
  • False-positive adoption — a successful local spike convinces someone to add it to composer.json, reintroducing the conflict for everyone.

Ramp-up. Near zero for the package (it does little), but non-trivial for the decision: the main cost is the review cycles spent establishing that a Symfony2 bundle does not belong in a Laravel stack. Close that question once, document the disposition, and route future discovery hits of the same shape (Symfony bundle surfaced for a Laravel project) through a filter so they do not consume assessment capacity again.

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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource