https://github.com/thecodingmachine/alias-container
This package contains a really minimalist dependency injection container that can be used to create aliases of instances in existing containers.
https://github.com/thecodingmachine/alias-container
Last synced: 9 months ago
JSON representation
This package contains a really minimalist dependency injection container that can be used to create aliases of instances in existing containers.
- Host: GitHub
- URL: https://github.com/thecodingmachine/alias-container
- Owner: thecodingmachine
- Created: 2015-01-25T16:22:25.000Z (almost 11 years ago)
- Default Branch: 1.0
- Last Pushed: 2020-04-15T21:17:11.000Z (almost 6 years ago)
- Last Synced: 2025-04-11T18:59:46.508Z (10 months ago)
- Language: PHP
- Size: 23.4 KB
- Stars: 5
- Watchers: 18
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Alias-Container
===============
[](https://packagist.org/packages/mouf/alias-container)
[](https://packagist.org/packages/mouf/alias-container)
[](https://packagist.org/packages/mouf/alias-container)
[](https://scrutinizer-ci.com/g/thecodingmachine/alias-container/?branch=1.0) [](https://insight.sensiolabs.com/projects/04f9f269-db42-4a3b-9cf9-1fd41aac2e8a)
[](https://travis-ci.org/thecodingmachine/alias-container)
[](https://coveralls.io/r/thecodingmachine/alias-container?branch=1.0)
This package contains a really minimalist dependency injection container that can be used to **create aliases** of instances
in existing containers. Alias-container is compatible with [container-interop](https://github.com/container-interop/container-interop)
and is meant to be used in conjunction with other containers. By itself, Alias-container does not store any entry. It can only be used
to **create aliases of instances stored in other containers**.
You can use AliasContainer to add support for alias for any container that does not support this feature.
Installation
------------
Before using AliasContainer in your project, add it to your `composer.json` file:
```
$ ./composer.phar require mouf/alias-container ~1.0
```
Defining aliases in the container
---------------------------------
Creating an alias container is a matter of creating an `AliasContainer` instance.
The `AliasContainer` class takes 2 parameters:
- a [delegate-lookup container](https://github.com/container-interop/container-interop/blob/master/docs/Delegate-lookup.md) (e.g. the container we will look aliases into)
- the list of aliases, as an **associative array of strings**
```php
use Mouf\AliasContainer;
use Interop\Container\ContainerInterface;
$aliasContainer = new AliasContainer($rootContainer, [
"myAlias"=>"myInstance",
"myAlias2"=>"myInstance2"
]);
```
The list of entries is an associative array.
- The key is the identifier of the alias to create
- The value is the identifier of the entry that will be aliased
Fetching entries from the container
-----------------------------------
Fetching entries from the container is as simple as calling the `get` method:
```php
$myInstance = $aliasContainer->get('myAlias');
```
Adding aliases to the container
-------------------------------
You can add new aliases using the `set` method.
```php
$aliasContainer->set('newAlias', 'myInstance');
```
Note that it is more efficient to initialize aliases in the container
than calling recursively the set method.
Removing aliases from the container
-----------------------------------
You can add new aliases using the `remove` method.
```php
$aliasContainer->remove('myAlias');
```
Why the need for this package?
------------------------------
This package is part of a long-term effort to bring [interoperability between DI containers](https://github.com/container-interop/container-interop). The ultimate goal is to
make sure that multiple containers can communicate together by sharing entries (one container might use an entry from another
container, etc...)