FcPhp Dependency Injection
Package to manage dependencies of project.

How to install
Composer:
$ composer require 00f100/fcphp-di
or add in composer.json
{
"require": {
"00f100/fcphp-di": "*"
}
}
How to use
<?php
use FcPHP\Di\Facades\DiFacade;
$di = DiFacade::getInstance();
$di->set(string $id, string $namespace, array $args = [], array $setters = [], bool $singleton = true);
$di->overwrite(string $id, string $namespace, array $args = [], array $setters = []) ;
$di->get(string $id, array $args = [], array $setters = []);
$di->setter(string $id, array $setters);
$di->make(string $id, array $args = [], array $setters = []);
Examples
<?php
use FcPHP\Di\Facades\DiFacade;
$di = DiFacade::getInstance();
$di->set('Example', 'Namespace\To\Example', ['foo' => 'bar'], ['setAnotherFoo', 'AnotherBar']);
$di->set('ExampleBar', 'Namespace\To\ExampleBar', ['example' => $di->get('Example')]);
echo $di->make('ExampleBar')->example->foo
echo $di->make('ExampleBar')->example->getAnotherFoo();
Events
<?php
use FcPHP\Di\Facades\DiFacade;
use FcPhp\Di\Interfaces\IInstance;
use FcPhp\Di\Interfaces\IContainer;
$di = DiFacade::getInstance();
$di->event([
'beforeSet' => function(string $id, string $namespace, array $args, array $setters, bool $singleton) {
},
'afterSet' => function(string $id, string $namespace, array $args, array $setters, bool $singleton, IInstance $instance) {
},
'beforeGet' => function(string $id, array $args, array $setters) {
},
'afterGet' => function(string $id, array $args, array $setters, IInstance $instance, IContainer $container) {
},
'beforeMake' => function(string $id, array $args, array $setters) {
},
'afterMake' => function(string $id, array $args, array $setters, IInstance $instance, IContainer $container, $class) {
}
]);