依赖注入
依赖注入是一种设计模式,可以搜索“php依赖注入”,这里不阐述了。
yii框架的依赖注入
Yii 通过 yii\di\Container 类提供 DI 容器特性。 它支持如下几种类型的依赖注入:
- 构造方法注入;
- 方法注入;
- Setter 和属性注入;
- PHP 回调注入.
常用的是构造方法注入,因为比较简单
构造方法注入
<?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();
}
}