PHP设计模式之适配器模式
来源:互联网 发布:sql r2是什么意识 编辑:程序博客网 时间:2024/04/29 07:34
1.说明
1.适配器模式:
可以将截然不同的函数接口封装成统一的API
2.实际应用举例,PHP的数据库操作有mysql, mysqli, pdo3种,可以用适配器模式统一成一致。类似的场景还有cache适配器,就是将memcache,redis,file,apc等不同的缓存函数统一成一致的
3.下面的例子可以帮助你对付各种数据库链接功能,mysql mysqli, pdo随便选,操作都抽象为统一的接口客户端不需要修改一行数据库链接方式
2.创建一个接口
interface IDatabase{ function connect($host, $user, $passwd, $dbname); function query($sql); function close();}
3.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); }}
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.实例调用,(统一接口调用)
$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();
1 0
- PHP之设计模式—适配器模式
- php中的设计模式之--适配器模式
- PHP设计模式之适配器模式
- php设计模式之适配器模式
- PHP设计模式之适配器模式
- PHP设计模式之适配器模式
- 《PHP设计模式》之 适配器模式
- php八大设计模式之适配器模式
- PHP设计模式之-----适配器模式
- PHP设计模式之-----适配器模式
- php 设计模式之 代理模式,适配器模式,外观模式
- PHP设计模式--适配器模式
- PHP设计模式-适配器模式
- php-设计模式--适配器模式
- PHP设计模式-适配器模式
- 设计模式之适配器
- 设计模式之适配器
- 设计模式之适配器
- MySQL集群节点、节点组、数据副本、以及分区
- 业余10—解决只能打开网页不能打开QQ或视频软件问题
- 单词统计
- 异步任务
- 循环首次适应算法
- PHP设计模式之适配器模式
- [黑马程序员]——java的概述
- ucos II任务管理之三:删除任务
- MAC 下查看某个端口被哪个进程占用及杀进程方法
- jquery.autocomplete.js 文本框自动填充 类似百度搜索引擎效果
- 通信网络航天卫星国际会议
- 面题1(类型转换关键字、sizeof(空类型)、复制构造、赋值运算符)
- hbase-1.0.1安装
- [Android]反编译apk + eclipse中调试smali