依赖注入
用来减少代码之间的耦合
有效分离对象和它所需的外部资源
示例
现有Person类和Car类这两个类
Person类
<?php
namespace di;
class Person
{
/**
* 依赖 : Person类依赖于Car
* 注入 car类注入到Person
*/
public static function buy()
{
$bmw = new Car();
return $obj->pay();
}
}
Car类
<?php
namespace di;
class Car
{
public function pay()
{
return 123;
}
}
index调用Person类的buy方法
public function personbuy()
{
$singwa = new Person();
echo $singwa->buy();
}
可以看出此时Person类和Car类形成耦合。前者依赖后者,此时利用依赖注入的思想将Car类注入到Person类中
修改后
<?php
namespace di;
class Person
{
/**
* 依赖 : Person类依赖于Car
* 注入 car类注入到Person
*/
public static function buy($obj)
{
// $bmw = new Car();
return $obj->pay();
}
}
index调用
public function personbuy()
{
$singwa = new Person();
$bmw = new Car();
echo $singwa->buy($bmw);
}
此时Car的对象被作为一个参数注入到Person的对象中,这就是最基本的依赖注入
也可以通过构造方法等其他方式实现依赖注入