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

Injection Bundle Laravel Package

incompass/injection-bundle

A dependency-injection bundle for PHP that centralizes service registration and container configuration, reducing boilerplate and making it easier to wire, replace, and test application components.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — disqualifying for a Laravel estate. The package is misfiled. incompass/injection-bundle is a Symfony bundle, built for Symfony's kernel/bundle lifecycle: a Bundle class registered in config/bundles.php, a DI extension, compiler passes that rewrite service definitions during container compilation, and cache warmup. Laravel has none of those extension points. It has service providers, a deferred container, and reflection-based auto-resolution in Illuminate\Container\Container. There is no adapter that loads a Symfony bundle into a Laravel application. Making this work in Laravel means porting its annotation-scanning and definition-rewriting logic into a service provider — a rewrite of the package, not an integration of it.

Integration feasibility — low, and the upside is near-zero even if the port succeeded. The capability on offer (declarative injection targets instead of hand-written service definitions) is already native in Laravel: constructor injection is resolved automatically, contextual binding is a provider one-liner, and interfaces are bound with $this->app->bind(). A ported version would duplicate framework behavior with a bespoke convention, add reflection cost at boot, and produce a DI style no Laravel developer on the team would recognize. There is no gap in our stack for this to fill.

Technical risk — high, and concentrated in provenance rather than in code we can read. Zero stars, zero dependents, no release history, no downloads, single obscure vendor (Incompass, a CRM vendor, not a DI tooling maintainer). A dependency injection extension touches every service in the container, so its blast radius is the entire application while its marginal benefit is a small syntactic convenience. Specific exposures:

  • No observable maintainer cadence, security-disclosure path, or CVE monitoring.
  • Unknown PHP/Symfony version constraints; almost certainly incompatible with Symfony 7 / PHP 8.3+ and with Laravel 11/12.
  • License and transitive dependency tree unverified. Annotation parsing typically pulls doctrine/annotations — itself in maintenance mode — plus reflection-scanning surface of its own.
  • Annotation-driven DI is a dead-end design line regardless of vendor: Symfony has migrated from Doctrine annotations to native PHP 8 attributes (#[Autowire], #[Required], #[TaggedIterator], #[AsDecorator]), and autowiring/autoconfigure has been core since 3.3.

Key questions to close before spending another hour on it:

  1. Is the target system actually Symfony, or is this misfiled against a Laravel requirement? This determines scope, and the answer appears to be the latter.
  2. What does the bundle provide that Laravel's container and Symfony's native attributes do not?
  3. Which PHP/Symfony versions are supported, and is there any tagged release with a changelog?
  4. Who maintains it, under what license, and what is the security-response path?
  5. Is there a composer.lock-pinned transitive dependency on deprecated doctrine/annotations?
  6. If this surfaced from inherited code, where is it referenced and what is the removal cost?

Integration Approach

Stack fit — no direct fit; the correct integration is none. For Laravel, the substitute is the framework we already run: constructor injection via the container, bind/singleton/contextual binding in AppServiceProvider, and interface-to-implementation maps. For Symfony 4+, the substitute is native autowiring plus PHP 8 attributes. In both cases the "annotation-driven wiring" intent is satisfied by core, type-safe, IDE-navigable features.

Migration path — substitute, do not adopt. If this is encountered while porting an Incompass-based Symfony service, map each annotation to its modern equivalent rather than carrying the bundle forward:

  • @Inject on a property → constructor type-hint, resolved by autowiring / the Laravel container.
  • Setter or method injection → explicit calls in service config, or constructor injection where possible.
  • Tagged/collection injection → #[TaggedIterator] (Symfony) or tagged bindings in a service provider (Laravel).

Budget this as a small refactor inside the port, not as a dependency decision. It is cheaper than adopting, pinning, and self-maintaining a fork.

Compatibility — unverified and probably blocking. There is no published compatibility matrix, so the only way to answer the question is a throwaway spike against a scratch skeleton on the pinned PHP version. Expect it to fail on modern Symfony and to be meaningless on Laravel. Do not schedule dependent work behind it.

Sequencing, if a spike is ever approved (legacy Symfony only):

  1. Confirm framework and PHP version against a scratch app — fifteen-minute go/no-go.
  2. Dependency-tree and license audit; specifically grep for doctrine/annotations.
  3. Port exactly one low-risk service; validate annotation resolution and container warmup.
  4. Benchmark that service against the native-attribute equivalent on readability, static-analysis support, and container build time. Native will win on all three.
  5. Stop and document the rejection unless the legacy constraint is absolute. If it is: pin the version, isolate to the legacy module behind a feature flag, and schedule removal at the next major.

Operational Impact

Maintenance — a standing cost with no upstream. Zero dependents and zero stars means effectively unmaintained code that we now own. Every PHP minor bump, Symfony major, and container change becomes our team's problem. This belongs in the estimate as a recurring line item, not a one-time adoption cost.

Support — none. No issue-tracker activity, no maintainer SLA, no community forum, no documentation beyond a one-line description. Internal engineers become de facto maintainers, and knowledge concentrates in whoever ran the spike — a single point of failure for on-call.

Scaling — reflection is not free. Annotation/attribute scanning adds container build time and memory. That is tolerable at warmup with a compiled container but amplifies on cold starts, queue workers, and high-fanout or serverless deployments that bootstrap per request. Benchmark container build time before and after; the delta is the real price of the abstraction.

Failure modes to instrument:

  • Silent mis-injection when an annotation target is renamed or a namespace moves — runtime failure, not compile-time.
  • Container cache staleness after deploy, producing environment-specific behavior that will not reproduce locally.
  • Annotation-parser version drift breaking boot entirely rather than degrading gracefully.
  • No security patch path: a CVE in the transitive annotation reader has no upstream fix to wait for.
  • Two competing DI styles in one codebase, because new hires will wire services the framework-native way and the bundle will keep doing something else.

Ramp-up — negative. No docs, no examples, no community corpus. Ramp-up is entirely internal knowledge transfer, and it produces a skill that does not transfer to the next project. Compare against native container features every hire already knows.

Recommendation: reject. Out of scope for Laravel (incompatible by construction), obsolete in design for modern Symfony, and carrying unquantified supply-chain risk with zero community signal. Close the evaluation, do not POC, do not procure. If the dependency is found in inherited code, log it as technical debt, scope replacement into the next major version, and contain rather than expand it in the interim.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log