PHP适配器模式
【IDatabase.php】
<?php /** * 适配器模式 * 可以将不同的函数接口封装成统一的API * 应用举例1:数据库操作 mysql/mysqli/pdo * 应用举例2:缓存适配器 memcache/redis/file/apc */ /** * 定义数据库操作的接口 */ interface IDatabase { //数据库连接操作 public function connect($host, $user, $passwd, $dbname); //数据库查询 public function query($sql); //关闭数据库连接 public function close(); }
【MysqliAdapter.class.php】
<?php /** * 适配器模式--适配mysqli数据库的连接类 */ require_once 'interface/IDatabase.php'; class MysqliAdapter implements IDatabase { protected $conn; public function connect($host, $user, $passwd, $dbname) { $conn = mysqli_connect($host, $user, $passwd, $dbname); $this->conn = $conn; } public function query($sql) { return mysqli_query($this->conn, $sql); } public function close() { mysqli_close($this->conn); } }
【MysqlAdapter.class.php】
//适配mysql的连接类 class MysqlAdapter implements IDatabase{}
【PdoAdapter.class.php】
//适配pdo的连接类 class PdoAdapter implements IDatabase{}
《调用》
////【适配器模式】 //可以方便的切换使用哪种数据库,其他的代码不需要改动 $db = new MysqliAdapter(); //适配mysqli //$db = new MysqlAdapter(); //适配mysql //$db = new PdoAdapter(); //适配pdo $db->connect('127.0.0.1', 'root', '123456', 'mysql'); $res = $db->query("show databases"); $db->close(); var_dump($res);