PHP设计模式--适配器
winterSky
2018-09-14 PM
1053℃
0条
//适配器模式,可以将截然不容的函数接口封装成统一的API。通俗的理解就是将不同接口适配成统一的API接口,使得原本不兼容的接口能够一起工作。
//在不同适配中,具体函数操作不一样,但接口一致
interface IDatabase
{
function connect($host,$user,$passwd,$dbname);
function query($sql);
function close();
}
//下面定义一个用mysql操作数据库的类
class Mysql implements IDatabase
{
protected $conn;
function connect($host,$user,$passwd,$dbname)
{
$conn = mysql_connect($host,$user,$passwd);
mysql_select_db($dbname,$conn);
$this->conn = $conn;
}
function query($sql)
{
$res = mysql_query($sql,$this->conn);
return $res;
}
function close()
{
mysql_close($this->conn);
}
}
//下面使用同一个接口,但用mysqli进行数据库操作
class Mysqli implements IDatabase
{
protected $conn;
function connect($host,$user,$passwd,$dbname)
{
$conn = mysqli_connect($host,$user,$passwd,$dbname);
$this->conn = $conn;
}
function query($sql)
{
$res = mysqli_query($this->conn,$sql);
return $res;
}
function close()
{
mysqli_close($this->conn);
}
}
//同理,用pdo进行数据库操作
class PDO implements IDatabase
{
protected $conn;
function connect($host,$user,$passwd,$dbname)
{
$conn = new \PDO("mysql:host=$host;dbname=$dbname",$user,$passwd);
$this->conn = $conn;
}
function query($sql)
{
return $this->conn->query($sql);
}
function close()
{
unset($this->conn;)
}
}
//当选择Mysql类操作时
$db = new Mysql();
$db->connect('localhost','root','root','test');
$db->query($sql);