依赖注入
- 简单来说,就是依赖于某个东西,然后给依赖者注入所依赖的东西来解决这个问题
例如:
- 商品有积分兑换商品和抢购商品
- 订单结算时,订单结算对象依赖于商品表的数据模型
- 针对不同商品模型对商品数据的处理,可以给订单结算对象注入不同的商品表模型
代码演示demo
- 积分商品模型
/**
* Class Integral
* @package 积分商品模型
*/
class Integral
{
/**
* 积分商品计算方法
*/
public function handle()
{
return '该商品只需要'.$this->price();
}
public function price()
{
return '积分:500';
}
}
- 抢购商品模型
/**
* Class Shop
* @package 抢购商品模型
*/
class Shop
{
public function handle()
{
return '该商品只需要'.$this->price();
}
public function price()
{
return '¥:122元';
}
}
- 订单收银台
/**
* Class Order
* @package 订单处理
*/
class Order
{
/**
* 收银台
*/
public static function pay($goods)
{
return $goods->handle();
}
}
使用方法
//如果商品是积分
dump(Order::pay((new Integral)));
//如果是抢购商品
dump(Order::pay((new Shop)));
运行截图
最后:
- 其实依赖注入早已经在我们的代码中实现
- 其功能类似于给函数传入一个回调函数