Download the PHP package buzzingpixel/container without Composer
On this page you can find all versions of the php package buzzingpixel/container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download buzzingpixel/container
More information about buzzingpixel/container
Files in buzzingpixel/container
Package container
Short Description A dependency injection container for PHP
License Apache-2.0
Informations about the package container
BuzzingPixel ContainerInterface implementation
A simple, concrete, easy to configure implementation of the PSR ContainerInterface. This container will auto-wire whatever it can. You can also provide bindings directly.
Configuring bindings
Bindings are configured by an array in the Container's constructor.
The keys in this array should be the classnames you wish to provide bindings for.
The values can be:
An object
If an object is provided, it will be treated as the concrete implementation for the classname.
A string
If a string is provided as the value, it will be treated as an ID for another entry in the container and will recurse back to the get
method to get the specified item. This is most useful for binding interfaces to concrete implementations.
A callable
If a callable is provided, it will be called the first time the entry is requested and is expected to provide the concrete implementation. It receives as its only argument the container instance.
Example:
Configuring constructor params
Sometimes, you want to let auto-wiring do its thing, but you need to configure just one parameter on some class — say, maybe an API key string. That's why the container constructor has array $constructorParamConfigs
as an argument. The array should be instances of \BuzzingPixel\Container\ConstructorParamConfig
.
Through the ConstructorParamConfig
constructor, you provide the name of the class to be configured ($id
), the name of the param to configure, and the value to give.
Example:
Caching
The container is pretty efficient, and for many applications, you may not need caching. However, if you're looking to eek out a little more performance in production, you can provide a cache implementation as the third argument in the constructor of the container. You could write your own, or you can use the file cache implementation bundled with this package.
The cache is invoked for any auto-wired class so that after it's been auto-wired, a factory is written to the cache file and loaded into the bindings of the container on next request so that reflection is not used for this class on future requests.
Example: