ServiceProviderContainer
in package
implements
ContainerInterface
Implements a PSR-11 compliant dependency injection container using a container-interop/service-provider.
This container SHALL resolve services by delegating to the factories and extensions defined in the provided ServiceProviderInterface instance.
Services are lazily instantiated on first request and cached for subsequent retrieval, enforcing singleton-like behavior within the container scope.
The container supports service extension mechanisms by allowing callable extensions to modify or enhance services after construction, based on the service identifier or its concrete class name.
If an optional wrapper container is provided, it SHALL be passed to service factories and extensions, allowing for delegation or decoration of service resolution. If omitted, the container defaults to itself.
Table of Contents
Interfaces
- ContainerInterface
- Extends the PSR-11 ContainerInterface to provide a consistent, domain-specific container interface for the FastForward ecosystem.
Methods
- __construct() : mixed
- Constructs a new ServiceProviderContainer instance.
- get() : mixed
- Retrieves a service from the container by its identifier.
- has() : bool
- Determines if the container can return an entry for the given identifier.
Methods
__construct()
Constructs a new ServiceProviderContainer instance.
public
__construct(ServiceProviderInterface $serviceProvider[, null|ContainerInterface $wrapperContainer = null ]) : mixed
This constructor SHALL initialize the container with a service provider and an optional delegating container. If no wrapper container is provided, the container SHALL delegate to itself.
Parameters
- $serviceProvider : ServiceProviderInterface
-
the service provider supplying factories and extensions
- $wrapperContainer : null|ContainerInterface = null
-
An optional container for delegation. Defaults to self.
get()
Retrieves a service from the container by its identifier.
public
get(string $id) : mixed
This method SHALL return a cached instance if available, otherwise it resolves the service using the factory provided by the service provider.
If the service has a corresponding extension, it SHALL be applied post-construction.
Parameters
- $id : string
-
the identifier of the service to retrieve
Tags
Return values
mixed —the service instance associated with the identifier
has()
Determines if the container can return an entry for the given identifier.
public
has(string $id) : bool
This method MUST return true if the entry exists in the cache or factories, false otherwise.
Parameters
- $id : string
-
identifier of the entry to look for
Return values
bool —true if the entry exists, false otherwise