依赖注入:类的依赖通过__construct()构造函数来实现。
class base
{
public function fly ($name)
{
echo '我要飞'.$name;
}
}
class demo01
{
protected $base;
public function __construct (base $base)
{
$this->base=$base;
}
public function action ()
{
$this->base->fly('hello world');
}
}
$demo01 = new demo01(new base());
$demo01->action();
上面就是一个简单的依赖注入,demo01类依赖base类,通过在demo01里面的构造函数来实现base里面的方法。
2.为什么要使用依赖注入
解释之前我们先了解一下“依赖倒置原则”。在传统软件中,上层代码依赖下次代码,当下层代码改动时,上层代码也要修改。而依赖倒置原则时,上层代码不应该依赖下层,而一个依赖借口。意为上层代码定义接口,而下层代码实现该借口。降低耦合性,提高系统弹性。
在上面的例子中,base类时下层借口,demo01时上层借口,通知依赖注入这个方法,我们在demo01类里面定义了一个上层类base的fly方法,而在base类里面实现这个fly方法。