php設計模式 -- 介面卡模式
阿新 • • 發佈:2018-12-12
1.介面卡模式: 能夠將截然不同的函式介面封裝成統一的API
2.實際應用舉例,PHP的資料庫操作有mysql, mysqli, pdo3種。能夠用介面卡模式統一成一致。相似的場景還有cache介面卡,就是將memcache,redis,file,apc等不同的快取函式統一成一致的
3.以下的樣例能夠幫助你對付各種資料庫連結功能,mysql mysqli, pdo隨便選,操作都抽象為統一的介面client不須要改動一行資料庫連結方式
繼承一個父類,在子類中定義相同的方法名,可以是不同的處理邏輯
程式碼示例
建立一個介面
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) { return mysqli_query($this->conn, $sql); } 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); } }
例項呼叫
$db = new PDO(); $db->connect('127.0.0.1', 'root', 'root', 'test'); $db->query('show databases'); $db->close(); $db = MySQLi (); $db->connect('127.0.0.1', 'root', 'root', 'test'); $db->query('show databases'); $db->close(); $db = MySQl PDO(); $db->connect('127.0.0.1', 'root', 'root', 'test'); $db->query('show databases'); $db->close();