PHPackages                             njeaner/di-container - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. njeaner/di-container

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

njeaner/di-container
====================

A simple dependency injection container for php projects

v1.3.0(3y ago)091MITPHPPHP &gt;=7.3

Since Jul 10Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Codinards/PHP-DI-Container)[ Packagist](https://packagist.org/packages/njeaner/di-container)[ RSS](/packages/njeaner-di-container/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (7)Used By (1)

PHP Dependency Injection Container
==================================

[](#php-dependency-injection-container)

[![Build Status](https://camo.githubusercontent.com/f689ca9bc05e3490be7c7dbbe32794d00ff9abc02ef059b1dad7737d21f867b0/68747470733a2f2f7472617669732d63692e6f72672f4a65616e4e6775696d6661636b2f5048502d44492d436f6e7461696e65722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/JeanNguimfack/PHP-DI-Container)[![Coverage Status](https://camo.githubusercontent.com/e09942d3870cec48076a4284725015c54840262a8c185158d130a2d6655f4fe9/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f4a65616e4e6775696d6661636b2f5048502d44492d436f6e7461696e65722f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/JeanNguimfack/PHP-DI-Container?branch=master)

A simple dependency injection container for php projects

Installation
------------

[](#installation)

```
composer require njeaner/di-container
```

How to use it
-------------

[](#how-to-use-it)

### Container Initialization

[](#container-initialization)

#### Initialize without parameter

[](#initialize-without-parameter)

```
$container = new \NJContainer\Container\Container();
```

#### Initialize using the parameter

[](#initialize-using-the-parameter)

The container can be constructed with:

- @param **\\NJContainer\\Container\\InstanceDefinition|null** $instance

and **NJContainer\\Container\\InstanceDefinition** can be constructed with:

- @param **\\NJContainer\\Container\\ContainerDefinition|null**

```
$containerDefinition = new \NJContainer\Container\ContainerDefinition();

$instance = new \NJContainer\Container\InstanceDefinition();
// or
$instance = new \NJContainer\Container\InstanceDefinition($containerDefinition);

$container = new \NJContainer\Container\Container($instance);
```

### Setting a dependency in the container

[](#setting-a-dependency-in-the-container)

Setting one definition

```
/**
 * @param id string
 * @param mixed $definition
 * @param bool $shared, if "true" container will save this definition instance as a factory dependency
*/
$container->set($id, $definition)
$container->set($id, $definition, true)
```

Setting several definition using an array of definitions

```
/**
 * @param  $definitions
 * @example [
 *      'name'=> ['John Doe'],
 *      'stdClass1'  => [new stdClass()],
 *      \Namespace\Route::class => [new \Namespace\Route(), true]
 * ];
 * The true value as second item in dependency array means that you are storing an= factory dependency
*/
$container->add($definitions)
```

Setting several definition using an file with return an array of definitions

```
/**
 * @param string $definitionsPath, path directory of definition file
*/
$container->addDefinition($definitionsPath)
```

### Setting dependency parameters

[](#setting-dependency-parameters)

Setting a parameter of an alias

```
/**
 * @param string $id definition id
 * @param string $name parameter name
 * @param mixed $parameter param value to set in definition
*/
$container->setParameter($id, $name, $parameter)
```

Setting several parameter of an alias

```
/**
 * @param string $id definition id
 * @param array $parameters
*/
$container->setParameters($id, $parameters)
```

### Getting a dependency from the container

[](#getting-a-dependency-from-the-container)

```
/**
 * @param string $id
 * @param bool $shared, if "true" container with retrieve a factory dependency
*/
$container->get($id)
$container->get($id, true)
```

Use example
-----------

[](#use-example)

```
class Foo{

}

class Bar {
    public function __construct(Foo $foo, $type = 'Bar'){
        $this->foo = $foo;
        $this->type = $type
    }
}

class FooBar{
    public function __construct(Foo $foo , string $name, array $params){

    }
}
```

```
    # config.php
    # dependency configuration file
