可以将截然不同的函数接口封装成统一的API
以下为伪代码,可以通过接口约束实现多种类型的数据库以相同的接口实现连接、查询、关闭,调用/切换时更加简单,三个私有方法用于实现单例获取对象
<?php
interface Database
{
public function connect($host, $port, $user, $password, $dbname);
public function query($sql);
public function close();
}
class Db1 implements Database
{
private $_conn;
private static $_instance;
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance()
{
if (self::$_instance) {
self::$_instance = new self;
}
retuen self::$_instance;
}
public function connect($host, $port, $user, $password, $dbname)
{
$this->_conn = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $user, $password);
return $this->_conn;
}
public function query($sql)
{
return $this->_conn->query($sql);
}
public function close()
{
unset($this->_conn);
}
}
class Db2 implements Database
{
private $_conn;
private static $_instance;
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance()
{
if (self::$_instance) {
self::$_instance = new self;
}
retuen self::$_instance;
}
public function connect($host, $port, $user, $password, $dbname)
{
$this->_conn = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $user, $password);
return $this->_conn;
}
public function query($sql)
{
return $this->_conn->query($sql);
}
public function close()
{
unset($this->_conn);
}
}