PHP依赖注入简单理解

<?php
	//依赖注入(Dependency injection)也叫控制反转(Inversion of Control)是一种设计模式
	//这种模式用来减少程序间的耦合。
	
	//假设我们有个类,需要用到数据库连接,我们可能这样写
	class UseDataBase{
		protected $adapter;
		public function __construct(){
			$this->adapter=new MySqlAdapter;
		}
		
		public function getList(){
			$this->adapter->query("sql语句");//使用MySslAdapter类中的query方法;
		}
	}
	class MySqlAdapter{};
	
	//我们可以通过依赖注入来重构上面这个例子
	
	class UseDataBase{
		protected $adapter;
		poublic function __construct(MySqlAdapter $adapter){
			$this->adapter=$adapter;
		}
		
		public function getList(){
			$this->adapter->query("sql语句");//使用MySslAdapter类中的query方法;
		}
	}
	class MySqlAdapter{};
	
	//但是,当我们有很多种数据库时,上面的这种方式就达不到要求或者要写很多个usedatabase类
	//所以我们再重构上面的这个例子
	class UseDataBase{
		protected $adapter;
		poublic function __construct(AdapterInterface $adapter){
			$this->adapter=$adapter;
		}
		
		public function getList(){
			$this->adapter->query("sql语句");//使用MySslAdapter类中的query方法;
		}
	}
	interface AdapterInterface{};
	class MySqlAdapter implements AdapterInterface{};
	class MSsqlAdapter implements AdapterInterface{};
	
	//这样的话,当要使用不同的数据库时,我们只需要添加数据库类就够了,usedatabase类则不需要动。
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值