class Container implements ArrayAccess, Container

Properties

static protected Container $instance

The current globally available container (if any).

protected array $resolved

An array of the types that have been resolved.

protected array $bindings

The container's bindings.

protected array $methodBindings

The container's method bindings.

protected array $instances

The container's shared instances.

protected array $aliases

The registered type aliases.

protected array $abstractAliases

The registered aliases keyed by the abstract name.

protected array $extenders

The extension closures for services.

protected array $tags

All of the registered tags.

protected array $buildStack

The stack of concretions currently being built.

protected array $with

The parameter override stack.

array $contextual

The contextual binding map.

protected array $reboundCallbacks

All of the registered rebound callbacks.

protected array $globalResolvingCallbacks

All of the global resolving callbacks.

protected array $globalAfterResolvingCallbacks

All of the global after resolving callbacks.

protected array $resolvingCallbacks

All of the resolving callbacks by class type.

protected array $afterResolvingCallbacks

All of the after resolving callbacks by class type.

Methods

when(string $concrete)

Define a contextual binding.

bool
bound(string $abstract)

Determine if the given abstract type has been bound.

bool
resolved(string $abstract)

Determine if the given abstract type has been resolved.

bool
isShared(string $abstract)

Determine if a given type is shared.

bool
isAlias(string $name)

Determine if a given string is an alias.

void
bind(string|array $abstract, Closure|string|null $concrete = null, bool $shared = false)

Register a binding with the container.

getClosure(string $abstract, string $concrete)

Get the Closure to be used when building a type.

bool
hasMethodBinding(string $method)

Determine if the container has a method binding.

void
bindMethod(string $method, Closure $callback)

Bind a callback to resolve with Container::call.

mixed
callMethodBinding(string $method, mixed $instance)

Get the method binding for the given method.

void
addContextualBinding(string $concrete, string $abstract, Closure|string $implementation)

Add a contextual binding to the container.

void
bindIf(string $abstract, Closure|string|null $concrete = null, bool $shared = false)

Register a binding if it hasn't already been registered.

void
singleton(string|array $abstract, Closure|string|null $concrete = null)

Register a shared binding in the container.

void
extend(string $abstract, Closure $closure)

"Extend" an abstract type in the container.

void
instance(string $abstract, mixed $instance)

Register an existing instance as shared in the container.

void
removeAbstractAlias(string $searched)

Remove an alias from the contextual binding alias cache.

void
tag(array|string $abstracts, array|mixed $tags)

Assign a set of tags to a given binding.

array
tagged(array $tag)

Resolve all of the bindings for a given tag.

void
alias(string $abstract, string $alias)

Alias a type to a different name.

mixed
rebinding(string $abstract, Closure $callback)

Bind a new callback to an abstract's rebind event.

mixed
refresh(string $abstract, mixed $target, string $method)

Refresh an instance on the given target and method.

void
rebound(string $abstract)

Fire the "rebound" callbacks for the given abstract type.

array
getReboundCallbacks(string $abstract)

Get the rebound callbacks for a given type.

wrap(Closure $callback, array $parameters = [])

Wrap the given closure such that its dependencies will be injected when executed.

mixed
call(callable|string $callback, array $parameters = [], string|null $defaultMethod = null)

Call the given Closure / class@method and inject its dependencies.

factory(string $abstract)

Get a closure to resolve the given type from the container.

mixed
makeWith(string $abstract, array $parameters)

Resolve the given type with the given parameter overrides.

mixed
make(string $abstract)

Resolve the given type from the container.

mixed
resolve(string $abstract, array $parameters = [])

Resolve the given type from the container.

mixed
getConcrete(string $abstract)

Get the concrete type for a given abstract.

string|null
getContextualConcrete(string $abstract)

Get the contextual concrete binding for the given abstract.

string|null
findInContextualBindings(string $abstract)

Find the concrete binding for the given abstract in the contextual binding array.

bool
isBuildable(mixed $concrete, string $abstract)

Determine if the given concrete is buildable.

mixed
build(string $concrete)

Instantiate a concrete instance of the given type.

array
resolveDependencies(array $dependencies)

Resolve all of the dependencies from the ReflectionParameters.

bool
hasParameterOverride(ReflectionParameter $dependency)

Determine if the given dependency has a parameter override from makeWith.

mixed
getParameterOverride(ReflectionParameter $dependency)

Get a parameter override for a dependency.

array
getLastParameterOverride()

Get the last parameter override.

mixed
resolvePrimitive(ReflectionParameter $parameter)

Resolve a non-class hinted primitive dependency.

mixed
resolveClass(ReflectionParameter $parameter)

Resolve a class based dependency from the container.

void
notInstantiable(string $concrete)

Throw an exception that the concrete is not instantiable.

void
unresolvablePrimitive(ReflectionParameter $parameter)

Throw an exception for an unresolvable primitive.

void
resolving(string $abstract, Closure $callback = null)

Register a new resolving callback.

void
afterResolving(string $abstract, Closure $callback = null)

Register a new after resolving callback for all types.

void
fireResolvingCallbacks(string $abstract, mixed $object)

Fire all of the resolving callbacks.

void
fireAfterResolvingCallbacks(string $abstract, mixed $object)

Fire all of the after resolving callbacks.

array
getCallbacksForType(string $abstract, object $object, array $callbacksPerType)

Get all callbacks for a given type.

void
fireCallbackArray(mixed $object, array $callbacks)

Fire an array of callbacks with an object.

array
getBindings()

Get the container's bindings.

string
getAlias(string $abstract)

Get the alias for an abstract if available.

array
getExtenders(string $abstract)

Get the extender callbacks for a given type.

void
forgetExtenders(string $abstract)

Remove all of the extender callbacks for a given type.

void
dropStaleInstances(string $abstract)

Drop all of the stale instances and aliases.

void
forgetInstance(string $abstract)

Remove a resolved instance from the instance cache.

void
forgetInstances()

Clear all of the instances from the container.

void
flush()

Flush the container of all bindings and resolved instances.

static Container
getInstance()

Set the globally available instance of the container.

static Container
setInstance(Container $container = null)

Set the shared instance of the container.

bool
offsetExists(string $key)

Determine if a given offset exists.

mixed
offsetGet(string $key)

Get the value at a given offset.

void
offsetSet(string $key, mixed $value)

Set the value at a given offset.

void
offsetUnset(string $key)

Unset the value at a given offset.

mixed
__get(string $key)

Dynamically access container services.

void
__set(string $key, mixed $value)

Dynamically set container services.

Details

at line 140
ContextualBindingBuilder when(string $concrete)

Define a contextual binding.

Parameters

string $concrete

Return Value

ContextualBindingBuilder

at line 151
bool bound(string $abstract)

Determine if the given abstract type has been bound.

Parameters

string $abstract

Return Value

bool

at line 164
bool resolved(string $abstract)

Determine if the given abstract type has been resolved.

Parameters

string $abstract

Return Value

bool

at line 180
bool isShared(string $abstract)

Determine if a given type is shared.

Parameters

string $abstract

Return Value

bool

at line 193
bool isAlias(string $name)

Determine if a given string is an alias.

Parameters

string $name

Return Value

bool

at line 206
void bind(string|array $abstract, Closure|string|null $concrete = null, bool $shared = false)

Register a binding with the container.

Parameters

string|array $abstract
Closure|string|null $concrete
bool $shared

Return Value

void

at line 241
protected Closure getClosure(string $abstract, string $concrete)

Get the Closure to be used when building a type.

Parameters

string $abstract
string $concrete

Return Value

Closure

at line 258
bool hasMethodBinding(string $method)

Determine if the container has a method binding.

Parameters

string $method

Return Value

bool

at line 270
void bindMethod(string $method, Closure $callback)

Bind a callback to resolve with Container::call.

Parameters

string $method
Closure $callback

Return Value

void

at line 282
mixed callMethodBinding(string $method, mixed $instance)

Get the method binding for the given method.

Parameters

string $method
mixed $instance

Return Value

mixed

at line 295
void addContextualBinding(string $concrete, string $abstract, Closure|string $implementation)

Add a contextual binding to the container.

Parameters

string $concrete
string $abstract
Closure|string $implementation

Return Value

void

at line 308
void bindIf(string $abstract, Closure|string|null $concrete = null, bool $shared = false)

Register a binding if it hasn't already been registered.

Parameters

string $abstract
Closure|string|null $concrete
bool $shared

Return Value

void

at line 322
void singleton(string|array $abstract, Closure|string|null $concrete = null)

Register a shared binding in the container.

Parameters

string|array $abstract
Closure|string|null $concrete

Return Value

void

at line 336
void extend(string $abstract, Closure $closure)

"Extend" an abstract type in the container.

Parameters

string $abstract
Closure $closure

Return Value

void

Exceptions

InvalidArgumentException

at line 360
void instance(string $abstract, mixed $instance)

Register an existing instance as shared in the container.

Parameters

string $abstract
mixed $instance

Return Value

void

at line 384
protected void removeAbstractAlias(string $searched)

Remove an alias from the contextual binding alias cache.

Parameters

string $searched

Return Value

void

at line 406
void tag(array|string $abstracts, array|mixed $tags)

Assign a set of tags to a given binding.

Parameters

array|string $abstracts
array|mixed $tags

Return Value

void

at line 427
array tagged(array $tag)

Resolve all of the bindings for a given tag.

Parameters

array $tag

Return Value

array

at line 447
void alias(string $abstract, string $alias)

Alias a type to a different name.

Parameters

string $abstract
string $alias

Return Value

void

at line 461
mixed rebinding(string $abstract, Closure $callback)

Bind a new callback to an abstract's rebind event.

Parameters

string $abstract
Closure $callback

Return Value

mixed

at line 478
mixed refresh(string $abstract, mixed $target, string $method)

Refresh an instance on the given target and method.

Parameters

string $abstract
mixed $target
string $method

Return Value

mixed

at line 491
protected void rebound(string $abstract)

Fire the "rebound" callbacks for the given abstract type.

Parameters

string $abstract

Return Value

void

at line 506
protected array getReboundCallbacks(string $abstract)

Get the rebound callbacks for a given type.

Parameters

string $abstract

Return Value

array

at line 522
Closure wrap(Closure $callback, array $parameters = [])

Wrap the given closure such that its dependencies will be injected when executed.

Parameters

Closure $callback
array $parameters

Return Value

Closure

at line 537
mixed call(callable|string $callback, array $parameters = [], string|null $defaultMethod = null)

Call the given Closure / class@method and inject its dependencies.

Parameters

callable|string $callback
array $parameters
string|null $defaultMethod

Return Value

mixed

at line 548
Closure factory(string $abstract)

Get a closure to resolve the given type from the container.

Parameters

string $abstract

Return Value

Closure

at line 562
mixed makeWith(string $abstract, array $parameters)

Resolve the given type with the given parameter overrides.

Parameters

string $abstract
array $parameters

Return Value

mixed

at line 573
mixed make(string $abstract)

Resolve the given type from the container.

Parameters

string $abstract

Return Value

mixed

at line 585
protected mixed resolve(string $abstract, array $parameters = [])

Resolve the given type from the container.

Parameters

string $abstract
array $parameters

Return Value

mixed

at line 645
protected mixed getConcrete(string $abstract)

Get the concrete type for a given abstract.

Parameters

string $abstract

Return Value

mixed $concrete

at line 667
protected string|null getContextualConcrete(string $abstract)

Get the contextual concrete binding for the given abstract.

Parameters

string $abstract

Return Value

string|null

at line 693
protected string|null findInContextualBindings(string $abstract)

Find the concrete binding for the given abstract in the contextual binding array.

Parameters

string $abstract

Return Value

string|null

at line 707
protected bool isBuildable(mixed $concrete, string $abstract)

Determine if the given concrete is buildable.

Parameters

mixed $concrete
string $abstract

Return Value

bool

at line 720
mixed build(string $concrete)

Instantiate a concrete instance of the given type.

Parameters

string $concrete

Return Value

mixed

Exceptions

BindingResolutionException

at line 771
protected array resolveDependencies(array $dependencies)

Resolve all of the dependencies from the ReflectionParameters.

Parameters

array $dependencies

Return Value

array

at line 802
protected bool hasParameterOverride(ReflectionParameter $dependency)

Determine if the given dependency has a parameter override from makeWith.

Parameters

ReflectionParameter $dependency

Return Value

bool

at line 815
protected mixed getParameterOverride(ReflectionParameter $dependency)

Get a parameter override for a dependency.

Parameters

ReflectionParameter $dependency

Return Value

mixed

at line 825
protected array getLastParameterOverride()

Get the last parameter override.

Return Value

array

at line 838
protected mixed resolvePrimitive(ReflectionParameter $parameter)

Resolve a non-class hinted primitive dependency.

Parameters

ReflectionParameter $parameter

Return Value

mixed

Exceptions

BindingResolutionException

at line 859
protected mixed resolveClass(ReflectionParameter $parameter)

Resolve a class based dependency from the container.

Parameters

ReflectionParameter $parameter

Return Value

mixed

Exceptions

BindingResolutionException

at line 885
protected void notInstantiable(string $concrete)

Throw an exception that the concrete is not instantiable.

Parameters

string $concrete

Return Value

void

Exceptions

BindingResolutionException

at line 906
protected void unresolvablePrimitive(ReflectionParameter $parameter)

Throw an exception for an unresolvable primitive.

Parameters

ReflectionParameter $parameter

Return Value

void

Exceptions

BindingResolutionException

at line 920
void resolving(string $abstract, Closure $callback = null)

Register a new resolving callback.

Parameters

string $abstract
Closure $callback

Return Value

void

at line 940
void afterResolving(string $abstract, Closure $callback = null)

Register a new after resolving callback for all types.

Parameters

string $abstract
Closure $callback

Return Value

void

at line 960
protected void fireResolvingCallbacks(string $abstract, mixed $object)

Fire all of the resolving callbacks.

Parameters

string $abstract
mixed $object

Return Value

void

at line 978
protected void fireAfterResolvingCallbacks(string $abstract, mixed $object)

Fire all of the after resolving callbacks.

Parameters

string $abstract
mixed $object

Return Value

void

at line 996
protected array getCallbacksForType(string $abstract, object $object, array $callbacksPerType)

Get all callbacks for a given type.

Parameters

string $abstract
object $object
array $callbacksPerType

Return Value

array

at line 1016
protected void fireCallbackArray(mixed $object, array $callbacks)

Fire an array of callbacks with an object.

Parameters

mixed $object
array $callbacks

Return Value

void

at line 1028
array getBindings()

Get the container's bindings.

Return Value

array

at line 1041
string getAlias(string $abstract)

Get the alias for an abstract if available.

Parameters

string $abstract

Return Value

string

Exceptions

LogicException

at line 1060
protected array getExtenders(string $abstract)

Get the extender callbacks for a given type.

Parameters

string $abstract

Return Value

array

at line 1077
void forgetExtenders(string $abstract)

Remove all of the extender callbacks for a given type.

Parameters

string $abstract

Return Value

void

at line 1088
protected void dropStaleInstances(string $abstract)

Drop all of the stale instances and aliases.

Parameters

string $abstract

Return Value

void

at line 1099
void forgetInstance(string $abstract)

Remove a resolved instance from the instance cache.

Parameters

string $abstract

Return Value

void

at line 1109
void forgetInstances()

Clear all of the instances from the container.

Return Value

void

at line 1119
void flush()

Flush the container of all bindings and resolved instances.

Return Value

void

at line 1133
static Container getInstance()

Set the globally available instance of the container.

Return Value

Container

at line 1148
static Container setInstance(Container $container = null)

Set the shared instance of the container.

Parameters

Container $container

Return Value

Container

at line 1159
bool offsetExists(string $key)

Determine if a given offset exists.

Parameters

string $key

Return Value

bool

at line 1170
mixed offsetGet(string $key)

Get the value at a given offset.

Parameters

string $key

Return Value

mixed

at line 1182
void offsetSet(string $key, mixed $value)

Set the value at a given offset.

Parameters

string $key
mixed $value

Return Value

void

at line 1195
void offsetUnset(string $key)

Unset the value at a given offset.

Parameters

string $key

Return Value

void

at line 1206
mixed __get(string $key)

Dynamically access container services.

Parameters

string $key

Return Value

mixed

at line 1218
void __set(string $key, mixed $value)

Dynamically set container services.

Parameters

string $key
mixed $value

Return Value

void