前言
终于要讲到这个著名的设计原则,其实它比其他设计模式都简单。
依赖注入的实质就是把一个类不可能更换的部分 和 可更换的部分 分离开来,通过注入的方式来使用,从而达到解耦的目的。
这里就举个数据库链接的栗子,希望大家理解
class Mysql{
private $host;
private $port;
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(); $con = $db->connect();
通常应该设计为单例,这里就先不搞复杂了。
显然,数据库的配置是可以更换的部分,因此我们需要把它拎出来。
class MysqlConfiguration
{
private $host;
private $port;
private $username;
private $password;
private $db_name;
public function construct(string $host, int $port, string $username, string $password,string $db_name)
{
$this->host = $host;
$this->port = $port;
$this->username = $username;
$this->password = $password;
$this->db_name = $db_name;
}
public function getHost(): string
{
return $this->host;
}
public function getPort(): int
{
return $this->port;
}
public function getUsername(): string
{
return $this->username;
}
public function getPassword(): string
{
return $this->password;
}
public function getDbName(): string
{
return $this->db_name;
}
}然后不可替换的部分这样:
立即学习“PHP免费学习笔记(深入)”;
class Mysql
{
private $configuration;
public function construct(DatabaseConfiguration $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','','my_db',22);
$db = new Mysql($config);
$con = $db->connect();$config是注入Mysql的,这就是所谓的依赖注入。
以上就是php设计模式-依赖注入的使用详解的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号