Na przykład masz zajęcia \app\components\First
i \app\components\Second
realizuje jeden interfejs \app\components\MyInterface
można użyć DI pojemnik zmienić klasę tylko w jednym miejscu. Na przykład:
class First implements MyInterface{
public function test()
{
echo "First class";
}
}
class Second implements MyInterface {
public function test()
{
echo "Second class";
}
}
$container= new \yii\di\Container();
$container->set ("\app\components\MyInterface","\app\components\First");
Teraz dajesz wystąpienie pierwszej klasy podczas wywoływania $container->get("\app\components\MyInterface");
$obj = $container->get("\app\components\MyInterface");
$obj->test(); // print "First class"
Ale teraz możemy ustawić inną klasę dla tego interfejsu.
Możesz ustawić klasy w jednym miejscu, a inny kod automatycznie użyje nowej klasy.
Here można znaleźć wspaniałą dokumentację dla tego wzoru w Yii z przykładami kodu.
http://www.yiiframework.com/doc-2.0/guide-concept-di-container.html#registering-dependencies –
Dlaczego nie pytasz dokładnie, co nie jest dla ciebie jasne? – Tahir