Download the PHP package mnapoli/assembly without Composer
On this page you can find all versions of the php package mnapoli/assembly. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mnapoli/assembly
More information about mnapoli/assembly
Files in mnapoli/assembly
Package assembly
Short Description Implementation of interop container definitions
License MIT
Informations about the package assembly
Assembly
This repository is experimental
Assembly provides an implementation for definition-interop definitions as well as a compatible container.
Installation
Usage
While you can implement Interop\Container\Definition\DefinitionProviderInterface
and return an array of definition objects built manually, Assembly provides a natural API to create definitions more easily.
To take advantage of this, simply extend Assembly\ArrayDefinitionProvider
and fill the getArrayDefinitions
method:
If you are using PHP 5.6 or above, you can import namespaced functions:
If you do not want to write a new class, you can also instantiate a new provider directly:
Definition classes
If you do not want to use the function helpers, you can also create definition instances directly.
ParameterDefinition
This definition will define a container entry "db.port"
. That means get('db.port')
will return 3306
.
Reference
This definition will alias the entry "logger" to the entry "monolog". That means that get('logger')
will return the result of get('monolog')
.
ObjectDefinition
The definition above will return the result of new PDO('mysql:host=localhost;dbname=test', 'user', 'password')
.
References can also be used:
The definition above will return the result of new PDO($container->get('db.connection_string'), 'user', 'password')
.
FactoryCallDefinition
The definition below will call the create()
method on the db.factory
container entry and return its result:
The definition below will call the static Acme\DbFactory::create()
method:
Container
Assembly ships with a simple container that is compatible with the standard definitions. The goal of this container is to provide a very easy way to get started for those wanting to consume definitions.
Here is how to use it:
For simplicity's sake, the container is immutable and its API is very limited. You are encouraged to use any other compatible container if you are left unsatisfied.
Definition resolver
The "definition resolver" of the container is written in a separate Assembly\Container\DefinitionResolver
class. This class is meant to be reused in any other container that wishes to support definition-interop. Using it is very simple:
All versions of assembly with dependencies
container-interop/container-interop Version ~1.1
container-interop/definition-interop Version ~0.2.0