1.適配器模式: 可以將截然不同的函數(shù)接口封裝成統(tǒng)一的API
2.實(shí)際應(yīng)用舉例,PHP的數(shù)據(jù)庫操作有mysql, mysqli, pdo3種,可以用適配器模式統(tǒng)一成一致。類似的場景還有cache適配器,就是將memcache,redis,file,apc等不同的緩存函數(shù)統(tǒng)一成一致的
3.下面的例子可以幫助你對付各種數(shù)據(jù)庫鏈接功能,mysql mysqli, pdo隨便選,操作都抽象為統(tǒng)一的接口客戶端不需要修改一行數(shù)據(jù)庫鏈接方式
interface IDatabase{ function connect($host, $user, $passwd, $dbname); function query($sql); function close();}
3.Mysql封裝
html' target='_blank'>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); }}
4.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); }}
5.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); }}
6.實(shí)例調(diào)用,(統(tǒng)一接口調(diào)用)
$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();
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選