Download the PHP package codeburner/container without Composer
On this page you can find all versions of the php package codeburner/container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download codeburner/container
More information about codeburner/container
Files in codeburner/container
Package container
Short Description The faster IoC Container ever seen.
License MIT
Informations about the package container
Codeburner Container
The faster IoC container package for you build blazing fast applications for the web.
Thanks to Tom Butler for motivate me with this announce of dice, a fast dependency injection container.
Instalation
Add codeburner/container
to your composer.json
file, and update or install composer dependencies.
or via CLI:
Usage
- Introduction
- Performance
- Concepts
- Usage
- Examples
- Bindings
- Binding Types
- Resolvable Bindings
- Resolved Bindings
- Binding Ways
- Strings
- Closures
- Instances
- Resolving Bindings
- Setting Dependencies Manually
- Extending Bindings
- Binding Types
- Exceptions
- API
Introduction
Welcome to the Codeburner blazing fast container docs! Before starting the usage is recommended understand the main goal and mission of all parts of this package.
Performance
Codeburner project create packages with performance in focus, and the benchmarks are comming!
Concepts
The container is responsable to automatilly instantiate new objects, resolving all class dependencies and storing these objects over aliases. This enable a greater flexibility removing hard-coded class dependencies, and instead, making the dependencies be dinacally injected at run-time.
Usage
After you have the classes ready to be instantiate, you only need to register the bindings and call then.
Examples
Usage examples are comming soon.
Bindings
Bindings are the objects stored in the container. The container implements the PSR-11 providing the get($id)
and has($id)
methods to access the bindings, and define the set($id, $concrete)
to store objects.
Binding Types
Resolvable Bindings
Resolvable bindings will return a new instance in every access.
Resolved Bindings
Resolved bindings are no more than singletons, every access will return the same instance.
Binding Ways
Strings
The simplest way to define a binding, you only need to give a class name as string.
Closures
Some times you need to set some attributes or make some initial logic on objects, you can do it with a closure binding.
Instances
If you need to attach an existent instance, you should use the set
or instance
method.
Resolving Bindings
The great goal of the container is to automatically inject all class dependencies, if you only need to create an instance of a class without binding then into container use the make
method.
Setting Dependencies Manually
Sometimes you want to define that some class will receive a specific object of another class on instantiation.
make($abstract, $parameters = [], $force = false)
accepts a second parameter to defined resolved dependencies, and a third to ensure that a new object will be created.
Executing Closures
If you have a closure with dependencies you can use the call($closure, $parameters = [])
method to resolve then.
And as well as make
, you can pass an array of resolved dependencies.
Extending Bindings
Some times you need to modify a binding, to do that use the extend
method. They receive the old binding object and a container reference.
Exceptions
The Codeburner Container implements PSR-11 providing two types of exceptions, the Psr\Container\Exception\NotFoundException
and Psr\Container\Exception\ContainerException
.
API
- Container
call(closure $closure, array $parameters = []) : mixed
Execute a closure resolving its dependenciesmake(string $abstract, array $parameters = [], bool $force = false) : mixed
Resolve something in the containerflush() : Container
Renew the containerget(string $abstract) : mixed
Get something stored in the containerhas(string $abstract) : bool
Verify if something is stored in the containerset(string $abstract, $concrete, bool $shared = false) : Container
Store something in the containersetIf(string $abstract, $concrete, bool $shared = false) : Container
Store something in the container if it does not already existssetTo(string $abstract, string $dependencyName, $dependency) : Container
Define a resolved dependency to something in the containersingleton(string $abstract, $concrete) : Container
Store a new singleton objectinstance(string $abstract, $concrete) : Container
Store a new instantiated classisSingleton(string $abstract) : bool
Verify if something in the container is a singletonisInstance(string $abstract) : bool
Verify if something in the container is a instanceextend(string $abstract, closure $extender) : Container
Wrap something instantiationshare(string $abstract) : Container
Convert something to a singleton