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

Container Laravel Package

fastd/container

A lightweight PSR-11 dependency injection container for PHP applications. It provides service registration, lazy loading, autowiring, aliases, and service providers, with simple integration into the FastD framework and other PSR-compatible projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. fastd/container is a standalone PSR-11 dependency-injection container from the FastD microframework ecosystem. It is not a Laravel integration package — it is a competing container to Illuminate\Container. In a Laravel codebase, the framework container is load-bearing: service providers, facades, deferred providers, contextual binding, tagged bindings, method injection into controllers/listeners/jobs, and Octane's sandboxing all assume Illuminate\Contracts\Container\Container semantics. Replacing it is not a realistic integration; the only plausible architectures are (a) an isolated, framework-agnostic component (CLI tool, standalone worker, reusable library) that should not depend on Laravel, or (b) a bounded context with its own composition root running alongside Laravel. Fit is therefore conditional and narrow, not framework-wide.

Integration feasibility. PSR-11 compliance is the single strongest argument: if the package correctly implements Psr\Container\ContainerInterface, it can be consumed behind an interface and swapped. Feasibility hinges on whether a bridge is needed in both directions — resolving Laravel services inside fastd (delegation/fallback container) and resolving fastd-managed services from Laravel ($app->bind() to a factory closure that calls the fastd container). Both are straightforward to write but are custom glue code you own forever. There is no published Laravel service provider, no facade, no documented bridge, and zero dependents to crib from.

Technical risk. High, driven by adoption signals rather than code quality. Three GitHub stars and zero dependents mean effectively no production validation, no Stack Overflow corpus, and no third-party tutorials. The project is single-maintainer and tied to a niche framework whose documentation and issue traffic are largely non-English; bus factor is the dominant risk. The reported last release date (2026-10-27) is in the future and should be treated as a data-quality anomaly until verified against Packagist — it may indicate a re-tagged or backdated release, and it undermines confidence in the metadata used to score this package. The composite score of ~19.9/100 with opportunity at 27.14 is a weak signal overall.

Key questions.

  • Which PSR-11 version is implemented (1.1 vs 2.0 typed signatures), and does it declare psr/container correctly in Composer?
  • Does it support autowiring/reflection-based resolution, or is every binding explicit? Does it support lazy/proxy services, decorators, and compilation/caching to a generated file?
  • What are the singleton vs. factory lifecycle semantics, and how are circular dependencies reported?
  • Which PHP versions are supported (8.1+ needed for a modern Laravel baseline)?
  • Is there a documented fallback/delegate-container mechanism for interop with another container?
  • Who maintains it, what is the commit cadence over the last 12 months, and is there any commercial backing?
  • Has anyone benchmarked resolution cost against Illuminate\Container on a realistic graph?

Integration Approach

Stack fit. Composer-installable, PSR-11, MIT — mechanically trivial to add. The fit question is organizational, not technical: adopting it means operating two containers in one repository. That is justified only where the alternative — depending on illuminate/container — is worse, i.e., a library you intend to publish for non-Laravel consumers, or a standalone process (consumer, scheduler, CLI) where booting the full framework is disproportionate.

Migration path. Do not migrate. Sequence instead:

  1. Identify a candidate component that is already container-shaped and does not touch facades, Eloquent, or framework helpers.
  2. Introduce an internal ContainerInterface boundary in that component; bind fastd behind it.
  3. If Laravel code must call into the component, register a thin factory in a Laravel service provider that returns the fastd-composed object graph; never let Laravel resolve fastd internals directly.
  4. If the component must call Laravel services, inject them as constructor dependencies from the Laravel side rather than reaching back through a fallback container — this keeps the dependency direction clean and avoids dual-lifecycle bugs.

Compatibility. PSR-11 gives container-level interop but not framework-level interop. Laravel-specific contracts (Illuminate\Contracts\Container\Container, Container::tag, extend, when()->needs()->give()) will not be satisfied. Facades, app(), resolve(), and container-aware testing helpers ($this->app->instance(), mock() in container) will not see fastd bindings. Plan for parallel test scaffolding.

Sequencing. Pilot in a non-critical, low-blast-radius component for one release cycle. Instrument resolution paths and failure cases. Gate broader use on: verified maintenance cadence, a written fallback plan (fork/vendor), and demonstrated equivalence of lifecycle semantics. Do not sequence this ahead of any Laravel upgrade work — it is an optimization, not a dependency.

Operational Impact

Maintenance. You will likely own the integration glue and possibly the package itself. With one maintainer and near-zero community, assume you may need to vendor the source, pin the version, or fork. Budget for periodic review of upstream commits; there is no security-advisory pipeline you can rely on, though the attack surface of a DI container is small (no network, no deserialization of untrusted input — verify the latter).

Support. No commercial support. Documentation and issue responses are likely in the FastD project's native language and oriented to that framework, not Laravel. Internal runbooks and a short design note explaining why a second container exists are mandatory — otherwise the next engineer will "simplify" by deleting it or, worse, wire it into core.

Scaling. Container resolution cost is negligible relative to framework bootstrap; the real scaling concern is cognitive and operational. In long-running processes (Octane, queue workers), stateful or per-request bindings in a second container are a leak vector that Laravel's own lifecycle hooks will not reset for you. If the package supports compiled/cached containers, wire that into the deploy pipeline; if not, cold-start reflection cost compounds per process.

Failure modes.

  • Duplicate instances: the same logical service constructed once by each container, producing split singleton state — the most likely and most confusing bug class.
  • Silent resolution failure: autowiring ambiguity or missing binding surfacing as a runtime exception deep in a request rather than at boot.
  • Circular dependency: error messaging quality unknown; debugging across two containers is materially harder.
  • Lifecycle drift: bindings that are singletons in one container and transient in the other.
  • Abandonment: upstream goes quiet, blocking PHP-version upgrades.
  • Metadata risk: the anomalous 2026 release date means the package's freshness signal cannot be trusted without direct verification.

Ramp-up. The API surface is small and PSR-11 is well understood, so individual ramp-up is measured in hours. Organizational ramp-up is the cost: two idioms, two debugging mental models, and an extra concept in every onboarding. For a team already fluent in Laravel's container, this is friction with no offsetting velocity gain inside the framework boundary. Recommend a default position of decline for framework-adjacent code, conditional approval for genuinely framework-agnostic components, pending answers to the maintenance and lifecycle questions above.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource