Package do manage providers. This package use FcPhp Di to inject dependency.
Composer:
$ composer require 00f100/fcphp-provider
or composer.json
{
"require": {
"00f100/fcphp-provider": "*"
}
}
<?php
namespace Some\Example
{
use FcPhp\Di\Interfaces\IDi;
use FcPhp\Provider\Interfaces\IProviderClient;
class ProviderClientExample implements IProviderClient
{
/**
* Method to configure Di in providers
*
* @param FcPhp\Di\Interfaces\IDi $di Di Instance
* @return void
*/
public function getProviders(IDi $di) :IDi
{
$di->set('Class', '\Class', [], ['SetConfiguration', => ['item1', 'item2', 'item3']]);
$di->set('Class2', '\Class', ['instance' => $this->get('Class')]);
return $di;
}
}
}
<?php
use FcPhp\Di\Facades\DiFacade;
use FcPhp\Provider\Facades\ProviderFacade;
$PathCache = 'tests/var/cache';
$pathToAutoload = 'tests/*/*/config';
$provider = ProviderFacade::getInstance($pathToAutoload, $PathCache);
$di = DiFacade::getInstance();
// Add new provider to process
$provider->addProviders(['Some\Example\ProviderClientExample']);
// Execute ...
$provider->make();
// Now instance of di have configuration ...
$di->make('Class2'); // Return new \Class(new \Class()) ....