PHP经典设计模式之依赖注入定义与用法详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-22 23:35:09 浏览: 评论:0
这篇文章主要介绍了PHP经典设计模式之依赖注入,结合实例形式分析了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();
Tags: PHP设计模式 PHP依赖注入
相关文章
- ·php设计模式——单例模式(Singleton)的常见应用场景(2015-04-15)
- ·php 设计模式之单例模式例子(2016-07-27)
- ·PHP设计模式之:单例模式的学习笔记(2016-07-29)
- ·PHP设计模式之:注册模式入门教程(2016-07-29)
- ·PHP设计模式之:适配器模式入门教程(2016-07-29)
- ·PHP设计模式之:数据映射模式教程(2016-07-29)
- ·PHP设计模式之:观察者模式学习笔记(2016-07-29)
- ·PHP常用设计模式之委托设计模式(2021-07-09)
- ·php设计模式之委托模式(2021-07-09)
- ·PHP设计模式之观察者模式实例(2021-07-10)
- ·PHP设计模式之模板方法模式定义与用法详解(2021-09-06)
- ·PHP设计模式之状态模式定义与用法详解(2021-09-06)
- ·PHP设计模式之装饰器模式定义与用法详解(2021-09-06)
- ·PHP设计模式之适配器模式定义与用法详解(2021-09-06)
- ·PHP设计模式之原型模式定义与用法详解(2021-09-06)
- ·PHP设计模式之工厂模式定义与用法详解(2021-09-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)