Per esempio si hanno classi \app\components\First
e \app\components\Second
implementa un'interfaccia \app\components\MyInterface
È possibile utilizzare il contenitore DI cambiare classe in un solo posto. Per esempio:
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");
ora vi darà istanza di prima classe al momento della chiamata $container->get("\app\components\MyInterface");
$obj = $container->get("\app\components\MyInterface");
$obj->test(); // print "First class"
ma ora possiamo impostare altra classe per questa interfaccia.
$container->set ("\app\components\MyInterface","\app\components\Second");
$obj = $container->get("\app\components\MyInterface");
$obj->test(); // print "Second class"
È possibile impostare le classi in un posto e l'altro codice utilizzerà automaticamente la nuova classe.
Here è possibile trovare una grande documentazione per questo modello in Yii con esempi di codice.
fonte
2015-09-22 21:57:59
http://www.yiiframework.com/doc-2.0/guide-concept-di-container.html#registering-dependencies –
Perché non chiedi esattamente cosa non ti è chiaro? – Tahir