前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP经典设计模式之依赖注入定义与用法详解

PHP经典设计模式之依赖注入定义与用法详解

作者头像
砸漏
发布2020-10-21 09:57:36
2920
发布2020-10-21 09:57:36
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

本文实例讲述了PHP经典设计模式之依赖注入定义与用法。分享给大家供大家参考,具体如下:

依赖注入的实质就是把一个类不可能更换的部分和可更换的部分分离开来,通过注入的方式来使用,从而达到解耦的目的。

一个数据库连接类:

代码语言:javascript
复制
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);
 }
}

使用这个类:

代码语言:javascript
复制
$db = new Mysql();
$db- connect();

通常数据库连接类应该设计为单列,这里先不要搞复杂了。

依赖注入

显然,数据库的配置是可以更换的部分,因此我们需要先把它拎出来:

代码语言:javascript
复制
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;
  }
}

然后不可替换的部分这样:

代码语言:javascript
复制
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());
 }
}

这样就完成了配置文件和连接逻辑的分离。

使用

代码语言:javascript
复制
$config = new MysqlConfiguration('127.0.0.1','root','password','my_db',22);
// $config是注入Mysql的,这就是所谓的依赖注入
$db = new Mysql($config);
$db- connect();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档