• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP经典设计模式之依赖注入定义与用法详解

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

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

    一个数据库连接类:

    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();
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 浅析PHP类的反射来实现依赖注入过程
    • PHP基于反射机制实现自动依赖注入的方法详解
    • PHP依赖注入(DI)和控制反转(IoC)详解
    • php中Ioc(控制反转)和Di(依赖注入)
    • PHP控制反转(IOC)和依赖注入(DI)
    • 对PHP依赖注入的理解实例分析
    • 理解php依赖注入和控制反转
    • 详解PHP设计模式之依赖注入模式
    上一篇:PHP常见过waf webshell以及最简单的检测方法
    下一篇:php面向对象程序设计中self与static的区别分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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