PHP经典设计模式之依赖注入定义与用法详解
本文实例讲述了PHP经典设计模式之依赖注入定义与用法。分享给大家供大家参考,具体如下:
依赖注入的实质就是把一个类不可能更换的部分和可更换的部分分离开来,通过注入的方式来使用,从而达到解耦的目的。
一个数据库连接类:
classMysql{ private$host; private$prot; private$username; private$password; private$db_name; //构造方法 publicfunction__construct(){ $this->host='127.0.0.1'; $this->port=22; $this->username='root'; $this->password=''; $this->db_name='my_db'; } //连接 publicfunctionconnect(){ returnmysqli_connect($this->host,$this->username,$this->password,$this->db_name,$this->port); } }
使用这个类:
$db=newMysql(); $db->connect();
通常数据库连接类应该设计为单列,这里先不要搞复杂了。
依赖注入
显然,数据库的配置是可以更换的部分,因此我们需要先把它拎出来:
classMysqlConfiguration{ private$host; private$prot; private$username; private$password; private$db_name; publicfunction__construct($host,$port,$username,$password,$db_name){ $this->host=$host; $this->port=$port; $this->username=$username; $this->password=$password; $this->db_name=$db_name; } publicfunctiongetHost(){ return$this->host; } publicfunctiongetPort(){ return$this->port(); } publicfunctiongetUsername(){ return$this->username; } publicfunctiongetPassword(){ return$this->password; } publicfunctiongetDbName(){ return$this->db_name; } }
然后不可替换的部分这样:
classMysql{ private$configuration; publicfunction__construct($config){ $this->configuration=$config; } //连接 publicfunctionconnect(){ returnmysqli_connect($this->configuration->getHost(),$this->configuration->getUsername(),$this->configuration->getPassword(),$this->configuration->getDbName(),$this->configuration->getPort()); } }
这样就完成了配置文件和连接逻辑的分离。
使用
$config=newMysqlConfiguration('127.0.0.1','root','password','my_db',22); //$config是注入Mysql的,这就是所谓的依赖注入 $db=newMysql($config); $db->connect();
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。