PHP经典设计模式
来源:互联网 发布:最佳情侣网络歌曲 编辑:程序博客网 时间:2024/06/10 02:23
依赖注入的实质就是把一个类不可能更换的部分
和可更换的部分
分离开来,通过注入的方式来使用,从而达到解耦的目的。
一个数据库连接类:
class Mysql{ private $host; private $prot; private $username; private $password; private $db_name; // 构造方法 public function __construct(){ $this->host = '127.0.0.1'; $this->port = 22; $this->username = 'root'; $this->password = ''; $this->db_name = 'my_db'; } // 连接 public function connect(){ return mysqli_connect($this->host,$this->username,$this->password,$this->db_name,$this->port); }}
使用这个类:
$db = new Mysql();$db->connect();
通常数据库连接类应该设计为单列,这里先不要搞复杂了。
依赖注入
显然,数据库的配置是可以更换的部分,因此我们需要先把它拎出来:
class MysqlConfiguration{ private $host; private $prot; private $username; private $password; private $db_name; public function __construct($host,$port,$username,$password,$db_name){ $this->host = $host; $this->port = $port; $this->username = $username; $this->password = $password; $this->db_name = $db_name; } public function getHost(){ return $this->host; } public function getPort(){ return $this->port(); } public function getUsername(){ return $this->username; } public function getPassword(){ return $this->password; } public function getDbName(){ return $this->db_name; }}
然后不可替换的部分这样:
class Mysql{ private $configuration; public function __construct($config){ $this->configuration = $config; } // 连接 public function connect(){ return mysqli_connect($this->configuration->getHost(),$this->configuration->getUsername(),$this->configuration->getPassword(),$this->configuration->getDbName(),$this->configuration->getPort()); }}
这样就完成了配置文件和连接逻辑的分离。
使用
$config = new MysqlConfiguration('127.0.0.1','root','password','my_db',22);// $config是注入Mysql的,这就是所谓的依赖注入$db = new Mysql($config);$db->connect();
阅读全文
0 0
- PHP经典设计模式
- php设计模式经典实例集合
- 玩弄经典--设计模式
- 经典设计模式
- 经典java设计模式
- 经典---JAVA设计模式
- 经典---JAVA设计模式
- 设计模式经典解释
- 经典的设计模式
- 设计模式经典解释
- 设计模式经典书籍
- 经典设计模式(x23)
- 设计模式---->经典设计模式一览
- 设计模式:设计模式经典总结
- 23种经典设计模式
- Adapter设计模式经典解析
- 【技术】设计模式经典解释
- 设计模式之Factory----经典
- java io
- Android开发第三方登录--微信登录
- java中的异常机制
- CUDA入门学习(二)
- jquery 循环执行ajax
- PHP经典设计模式
- Linux网络编程入门
- hackerrank>Dashboard>C++>STL>Print Pretty
- Mybatis源码学习笔记(五)配置简介之TypeHandler
- [STL] 浅谈Rope使用(附[BZOJ]1507 Editor)
- Activity使用总结
- Python基础(三)-变量
- thread09
- jsp原理