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

league/container

League/Container is a fast, lightweight, PSR-11 compliant dependency injection container for PHP. It offers constructor autowiring, service providers, inflectors, and lazy loading out of the box, requires no configuration, and supports PHP 8.3, 8.4, and 8.5.

View on GitHub
Deep Wiki
Context7
5.2.0

5.2.0

Added

  • Event system for hooking into the container lifecycle
    • Four event types: OnDefineEvent, BeforeResolveEvent, DefinitionResolvedEvent, ServiceResolvedEvent
    • Fluent filtering API: forType(), forTag(), forId(), where()
    • Container::listen() for registering filtered event listeners
    • Container::afterResolve() convenience method as a drop-in replacement for inflector()
    • Lazy event dispatch: events are only created when listeners are registered for that event type
    • EventDispatcher::hasListenersFor() to check whether listeners exist for a given event type
    • DefinitionInterface::getTags() for retrieving tags from definitions
    • Docs: https://container.thephpleague.com/5.x/events/
  • Container::getDelegate(string $class) to retrieve a registered delegate container by type

Fixed

  • Interface-to-concrete definitions now correctly resolve through the concrete's own registered definition instead of bypassing it via direct reflection (#275, #278)
  • Definition::resolveClass() now throws ContainerException with actionable guidance when a class has unsatisfied constructor dependencies, instead of a raw ArgumentCountError

Deprecated

  • Container::inflector() - use Container::afterResolve() or the event system instead. Will be removed in v6.0.

Changed

  • DefinitionContainerInterface no longer extends EventAwareContainerInterface (removed)
  • Shared definitions now receive a 'shared' tag automatically via addTag('shared')

Removed

  • EventAwareContainerInterface - the event system is provided by EventAwareTrait on the concrete Container class, not as an interface contract
5.1.0

5.1.0

Added

Changed

  • Small internal changes for stricter static analysis and type safety. (@ADmad)
5.0.1

5.0.1

Fixed

  • Fixed a small unreachable code bug

5.0.0

Added

  • Ability to overwrite a definition within the container, disabled by default

Changed

  • PHP requirement now >=8.1
  • General language modernisation
  • General prep for future updates and container compilation
4.2.4

4.2.4

Fixed

  • Now properly handle string based fully qualified class names in with preceding slashes. (@M1ke)
4.2.3

Fixed

  • Warnings for PHP 8.4 implicit nullable types (@andypost)
4.2.1

4.2.1

Fixed

  • Remove an unnecessary conditional in ServiceProviderAggregate. (@SubhanSh)
  • Fixed an infinite loop in resolving definitions. (@arai-ta)
4.2.0

Added

  • Support for psr/container 1.1.0.
4.1.2

Fixed

  • Fix bug that was causing an error on inflection due to introduced type hint.
4.1.1

Changed

  • Move files autoload directive to dev (@ADmad)
4.1.0

Added

  • Way to handle non-public controllers safely (@beryllium)
3.4.1

Added

  • Way to handle non-public controllers safely (@beryllium)
  • PHPUnit ^7.0 for PHP versions that support it (@beryllium)
4.0.0

Added

  • New definition interface that extends psr/container
  • Literal and resolvable argument wrappers for better explicitness in definitions

Changed

  • PHP requirement now >=7.2
  • Updated psr/container to ^2.0.0
  • Container::shared convenience method is now explicit Container::addShared method
  • Removed third argument $shared from Container::add, use Container::addShared
  • ServiceProviderInterface now defines return types
  • Service providers now require implementation of a provides method rather than relying on a class property.
3.4.0

Removed

  • Support for psr/container ^2.0.0 as the interface cannot be reconciled between versions
3.3.4

3.3.4

Fixed

  • Fixed an issue that caused a recursive register call. @pcoutinho
  • Fixed a return type declaration. @orbex
3.3.3

Fixed

  • Fixed bug relating to ReflectionContainer::call on arrow functions.
3.3.2

Added

  • Experimental support for PHP 8.

Fixed

  • Fix issue when preventing reflection from using default value for arguments.
3.3.1

3.3.1

Fixed

  • Respect $new argument when getting tagged definitions.
3.3.0

3.3.0

Added

  • Support for PHP 7.3
  • {set,get}LeagueContainer methods added to ContainerAwareTrait as a temporary measure until next major release when this can be properly addressed, less hinting of Psr\Container\ContainerInterface

Changed

  • Various internal code improvements

Fixed

  • Fix for setConcrete not re-resolving class on when overriding (@jleeothon)
  • Fix stack overflow error incase a service provider lies about providing a specific service (@azjezz)
  • Fix issue where providers may be aggregated multiple times (@bwg)
  • Various documentation fixes
3.2.2

3.2.2

Fixed

  • Fixed issue that prevented service providers from registering if a previous one in the aggregate was already registered.
3.2.1

3.2.1

Fixed

  • Fixed issue where all service providers were registered regardless of whether they need to be.
3.2.0

3.2.0

Added

  • Added ability to add definition as not shared when container is set to default to shared.
  • Added {set|get}Concrete to definitions to allow for better use of extend.

(Thanks to @jenssegers for these)

3.1.0

3.1.0

Added

  • Re-added the share proxy method that was mistakenly removed in previous major release.
  • Added ability to set Conatiner to "share" by default using defaultToShared method.
  • Added ability for ReflectionContainer to cache resolutions and pull from cache for following calls.
3.0.1

3.0.1

Added

  • Allow definition aggregates to be built outside of container.
3.0.0

3.0.0

Added

  • Service providers can now be pulled from the container if they are registered.
  • Definition logic now handled by aggregate for better separation.
  • Now able to add tags to a definition to return an array of items containing that tag.

Changed

  • Updated minimum PHP requirements to 7.0.
  • Now depend directly on PSR-11 interfaces, including providing PSR-11 exceptions.
  • Refactored inflector logic to accept type on construction and use generator to iterate.
  • Refactored service provider logic with better separation and performance.
  • Merged service provider signature logic in to one interface and abstract.
  • Heavily simplified definition logic providing more control to user.
2.4.1

Fixed

  • Ensures ReflectionContainer converts class name in array callable to object.
2.3.0

Added

  • Now implementation of the PSR-11.
2.4.0

Changed

  • Can now wrap shared objects as RawArgument.
  • Ability to override shared items.

Fixed

  • Booleans now recognised as accepted values.
  • Various docblock fixes.
  • Unused imports removed.
  • Unreachable arguments no longer passed.
2.2.0

Changed

  • Service providers can now be added multiple times by giving them a signature.
2.1.0

Added

  • Allow resolving of RawArgument objects as first class dependencies.

Changed

  • Unnecessary recursion removed from Container::get.
2.0.3

Fixed

  • Bug where delegating container was not passed to delegate when needed.
  • Bug where Container::extend would not return a shared definition to extend.
2.0.2

Fixed

  • Bug introduced in 2.0.1 where shared definitions registered via a service provider would never be returned as shared.
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.
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect
youbar/easy-crud
c-point-labs/laravel-hostyourai
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo