首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 設計模式:適配器模式統一資料庫操作介面

     編輯:PHP 相關知識

PHP 設計模式:適配器模式統一資料庫操作介面

適配器模式將截然不同的函式介面封裝為統一 API。適用場景:MySQL、MySQLi、PDO 三種資料庫操作介面統一;快取介面統一。

介面定義

namespace Baobab;
interface IDatabase {
    function connect($host, $user, $passwd, $dbname);
    function query($sql);
    function fetch_result($result);
    function close();
}

MySQLi 適配器

namespace Baobab\Database;
use Baobab\IDatabase;
class Mysqli implements IDatabase {
    protected $conn;
    function connect($host, $user, $passwd, $dbname) {
        $this->conn = mysqli_connect($host, $user, $passwd, $dbname);
        mysqli_set_charset($this->conn, 'utf8');
    }
    function query($sql) { return mysqli_query($this->conn, $sql); }
    function fetch_result($result) { return mysqli_fetch_all($result); }
    function close() { mysqli_close($this->conn); }
}

PDO 適配器

namespace Baobab\Database;
use Baobab\IDatabase;
class Pdo implements IDatabase {
    protected $conn;
    function connect($host, $user, $passwd, $dbname) {
        $this->conn = new \PDO("mysql:dbname=$dbname;host=$host", $user, $passwd);
    }
    function query($sql) { return $this->conn->query($sql); }
    function fetch_result($result) { return $result->fetchAll(); }
    function close() { unset($this->conn); }
}

使用

$db = new Baobab\Database\Mysqli();
$db->connect('127.0.0.1', 'root', '', 'test');
$res = $db->query('select * from ha_cl');
print_r($db->fetch_result($res));
$db->close();

客戶端程式碼不變,更換資料庫驅動只需替換適配器實例,符合開放封閉原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved