依赖注入是一种设计模式,可以搜索“php依赖注入”,这里不阐述了。
Yii 通过 yii\di\Container 类提供 DI 容器特性。 它支持如下几种类型的依赖注入:
常用的是构造方法注入,因为比较简单
<?php
namespace app\controllers;
use yii\web\Controller;
use yii\di\Container;
class A
{
public $name = "hello";
}
class B
{
private $_obj;
//这里要注意声明$a的类型
public function __construct(A $a)
{
$this->_obj = $a;
}
public function Say()
{
echo $this->_obj->name;
}
}
class HelloController extends Controller
{
public function actionIndex()
{
$container = new Container();
$b = $container->get("app\controllers\B");
$b->Say(); //hello
//上面的代码类似于
// $a = new A();
// $b = new B($a);
// $b->Say();
}
}
原文:https://www.cnblogs.com/-beyond/p/9483465.html