Container
class Container implements ArrayAccess, Container (View source)
Properties
static protected Container | $instance | The current globally available container (if any). |
|
protected bool[] | $resolved | An array of the types that have been resolved. |
|
protected array[] | $bindings | The container's bindings. |
|
protected Closure[] | $methodBindings | The container's method bindings. |
|
protected object[] | $instances | The container's shared instances. |
|
protected array | $scopedInstances | The container's scoped instances. |
|
protected string[] | $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. |
|
array[] | $contextualAttributes | The contextual attribute handlers. |
|
protected array[] | $reboundCallbacks | All of the registered rebound callbacks. |
|
protected Closure[] | $globalBeforeResolvingCallbacks | All of the global before resolving callbacks. |
|
protected Closure[] | $globalResolvingCallbacks | All of the global resolving callbacks. |
|
protected Closure[] | $globalAfterResolvingCallbacks | All of the global after resolving callbacks. |
|
protected array[] | $beforeResolvingCallbacks | All of the before resolving callbacks by class type. |
|
protected array[] | $resolvingCallbacks | All of the resolving callbacks by class type. |
|
protected array[] | $afterResolvingCallbacks | All of the after resolving callbacks by class type. |
|
protected array[] | $afterResolvingAttributeCallbacks | All of the after resolving attribute callbacks by class type. |
Methods
Define a contextual binding.
Define a contextual binding based on an attribute.
Determine if the given abstract type has been bound.
{@inheritdoc}
Determine if the given abstract type has been resolved.
Determine if a given type is shared.
Determine if a given string is an alias.
Get the Closure to be used when building a type.
Determine if the container has a method binding.
Bind a callback to resolve with Container::call.
Get the method to be bound in class@method format.
Get the method binding for the given method.
Add a contextual binding to the container.
Register a shared binding if it hasn't already been registered.
Register an existing instance as shared in the container.
Remove an alias from the contextual binding alias cache.
Assign a set of tags to a given binding.
Resolve all of the bindings for a given tag.
Alias a type to a different name.
Refresh an instance on the given target and method.
Fire the "rebound" callbacks for the given abstract type.
Get the rebound callbacks for a given type.
Call the given Closure / class@method and inject its dependencies.
Get the class name for the given callback, if one can be determined.
An alias function name for make().
Resolve the given type from the container.
{@inheritdoc}
Resolve the given type from the container.
Get the concrete type for a given abstract.
Get the contextual concrete binding for the given abstract.
Find the concrete binding for the given abstract in the contextual binding array.
Determine if the given concrete is buildable.
Resolve all of the dependencies from the ReflectionParameters.
Determine if the given dependency has a parameter override.
Get the last parameter override.
Resolve a class based variadic dependency from the container.
Resolve a dependency based on an attribute.
Throw an exception that the concrete is not instantiable.
Throw an exception for an unresolvable primitive.
Register a new before resolving callback for all types.
Register a new after resolving callback for all types.
Register a new after resolving attribute callback for all types.
Fire all of the before resolving callbacks.
Fire an array of callbacks with an object.
Fire all of the resolving callbacks.
Fire all of the after resolving callbacks.
Fire all of the after resolving attribute callbacks.
Get all callbacks for a given type.
Fire an array of callbacks with an object.
Get the container's bindings.
Get the alias for an abstract if available.
Get the extender callbacks for a given type.
Remove all of the extender callbacks for a given type.
Drop all of the stale instances and aliases.
Remove a resolved instance from the instance cache.
Clear all of the instances from the container.
Clear all of the scoped instances from the container.
Flush the container of all bindings and resolved instances.
Get the globally available instance of the container.
Set the shared instance of the container.
Determine if a given offset exists.
Get the value at a given offset.
Set the value at a given offset.
Unset the value at a given offset.
Dynamically access container services.
Dynamically set container services.
Details
ContextualBindingBuilder
when(string|array $concrete)
Define a contextual binding.
void
whenHasAttribute(string $attribute, Closure $handler)
Define a contextual binding based on an attribute.
bool
bound(string $abstract)
Determine if the given abstract type has been bound.
bool
has(string $id)
{@inheritdoc}
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 $abstract, Closure|string|null $concrete = null, bool $shared = false)
Register a binding with the container.
protected Closure
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(array|string $method, Closure $callback)
Bind a callback to resolve with Container::call.
protected string
parseBindMethod(array|string $method)
Get the method to be bound in class@method format.
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 $abstract, Closure|string|null $concrete = null)
Register a shared binding in the container.
void
singletonIf(string $abstract, Closure|string|null $concrete = null)
Register a shared binding if it hasn't already been registered.
void
scoped(string $abstract, Closure|string|null $concrete = null)
Register a scoped binding in the container.
void
scopedIf(string $abstract, Closure|string|null $concrete = null)
Register a scoped binding if it hasn't already been registered.
void
extend(string $abstract, Closure $closure)
"Extend" an abstract type in the container.
mixed
instance(string $abstract, mixed $instance)
Register an existing instance as shared in the container.
protected 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.
iterable
tagged(string $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.
protected void
rebound(string $abstract)
Fire the "rebound" callbacks for the given abstract type.
protected array
getReboundCallbacks(string $abstract)
Get the rebound callbacks for a given type.
Closure
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.
protected string|false
getClassForCallable(callable|string $callback)
Get the class name for the given callback, if one can be determined.
Closure
factory(string $abstract)
Get a closure to resolve the given type from the container.
mixed
makeWith(string|callable $abstract, array $parameters = [])
An alias function name for make().
mixed
make(string $abstract, array $parameters = [])
Resolve the given type from the container.
mixed
get(string $id)
{@inheritdoc}
protected mixed
resolve(string|callable $abstract, array $parameters = [], bool $raiseEvents = true)
Resolve the given type from the container.
protected mixed
getConcrete(string|callable $abstract)
Get the concrete type for a given abstract.
protected Closure|string|array|null
getContextualConcrete(string|callable $abstract)
Get the contextual concrete binding for the given abstract.
protected Closure|string|null
findInContextualBindings(string|callable $abstract)
Find the concrete binding for the given abstract in the contextual binding array.
protected bool
isBuildable(mixed $concrete, string $abstract)
Determine if the given concrete is buildable.
mixed
build(Closure|string $concrete)
Instantiate a concrete instance of the given type.
protected array
resolveDependencies(array $dependencies)
Resolve all of the dependencies from the ReflectionParameters.
protected bool
hasParameterOverride(ReflectionParameter $dependency)
Determine if the given dependency has a parameter override.
protected mixed
getParameterOverride(ReflectionParameter $dependency)
Get a parameter override for a dependency.
protected array
getLastParameterOverride()
Get the last parameter override.
protected mixed
resolvePrimitive(ReflectionParameter $parameter)
Resolve a non-class hinted primitive dependency.
protected mixed
resolveClass(ReflectionParameter $parameter)
Resolve a class based dependency from the container.
protected mixed
resolveVariadicClass(ReflectionParameter $parameter)
Resolve a class based variadic dependency from the container.
mixed
resolveFromAttribute(ReflectionAttribute $attribute)
Resolve a dependency based on an attribute.
protected void
notInstantiable(string $concrete)
Throw an exception that the concrete is not instantiable.
protected void
unresolvablePrimitive(ReflectionParameter $parameter)
Throw an exception for an unresolvable primitive.
void
beforeResolving(Closure|string $abstract, Closure|null $callback = null)
Register a new before resolving callback for all types.
void
resolving(Closure|string $abstract, Closure|null $callback = null)
Register a new resolving callback.
void
afterResolving(Closure|string $abstract, Closure|null $callback = null)
Register a new after resolving callback for all types.
void
afterResolvingAttribute(string $attribute, Closure $callback)
Register a new after resolving attribute callback for all types.
protected void
fireBeforeResolvingCallbacks(string $abstract, array $parameters = [])
Fire all of the before resolving callbacks.
protected void
fireBeforeCallbackArray(string $abstract, array $parameters, array $callbacks)
Fire an array of callbacks with an object.
protected void
fireResolvingCallbacks(string $abstract, mixed $object)
Fire all of the resolving callbacks.
protected void
fireAfterResolvingCallbacks(string $abstract, mixed $object)
Fire all of the after resolving callbacks.
void
fireAfterResolvingAttributeCallbacks(array $attributes, mixed $object)
Fire all of the after resolving attribute callbacks.
protected array
getCallbacksForType(string $abstract, object $object, array $callbacksPerType)
Get all callbacks for a given type.
protected 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.
protected 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.
protected 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
forgetScopedInstances()
Clear all of the scoped instances from the container.
void
flush()
Flush the container of all bindings and resolved instances.
static Container
getInstance()
Get the globally available instance of the container.
static Container|Container
setInstance(Container|null $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.