1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
<?php
namespace hji\membership\services;
use Dice\Dice;
use Dice\Rule;
use Dice\Instance;
class DependencyInjectorInterface
{
private static $DI;
private function getDi()
{
if (!self::$DI)
{
self::$DI = new Dice();
}
return self::$DI;
}
public function create($component, array $args = array(), $callback = null, $forceNewInstance = false)
{
$di = $this->getDi();
return $di->create($component, $args, $callback, $forceNewInstance);
}
public function get($component, array $args = array(), $callback = null, $forceNewInstance = false)
{
$di = $this->getDi();
if ($component instanceof Instance) $component = $component->name;
$component = trim($component, '\\');
$rule = $di->getRule($component);
$_blankRule = $this->createRule();
if ($rule == $_blankRule)
{
$rule->shared = true;
$di->addRule($component, $rule);
}
return $di->create($component, $args, $callback, $forceNewInstance);
}
public function createRule()
{
return new Rule();
}
public function addRule($name, Rule $rule)
{
$di = $this->getDi();
$di->addRule($name, $rule);
}
public function instance($name)
{
return new Instance($name);
}
}