依赖注入
依赖注入是一种设计模式,可以搜索“php依赖注入”,这里不阐述了。
yii框架的依赖注入
Yii 通过 yiidiContainer 类提供 DI 容器特性。 它支持如下几种类型的依赖注入:
- 构造方法注入;
- 方法注入;
- Setter 和属性注入;
- PHP 回调注入.
常用的是构造方法注入,因为比较简单
构造方法注入
<?php namespace appcontrollers; use yiiwebController; use yiidiContainer; 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("appcontrollersB"); $b->Say(); //hello //上面的代码类似于 // $a = new A(); // $b = new B($a); // $b->Say(); } }