PHP设计模式之适配器模式
2015-07-12 13:47
676 查看
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();
相关文章推荐
- PHP设计模式之策略模式
- 关于启用php_curl.dll后PHP Warning: PHP Startup: in Unknown on line 0之烦恼~~
- 使用laravel 的artisan快速创建表
- 修改PHP上传文件大小限制的方法
- 关于PHP会话:session和cookie
- php 中利用json_encode和json_decode传递包含特殊字符的数据
- [php] 面包屑导航2
- InputStream重用技巧(利用ByteArrayOutputStream)
- php学习之路:php在iconv功能 详细解释
- vlan间路由,VTP,DHCP,PVST,HSRP。真是综合了好多知识点。
- vlan,vlan间路由,vtp,HSRP,PVST,DHCP。
- PHP中单引号和双引号的区别
- atitit.session的原理以及设计 java php实现的异同
- atitit.session的原理以及设计 java php实现的异同
- atitit。全局变量的设计与实现 java php的异同
- atitit。全局变量的设计与实现 java php的异同
- Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
- 记一本关于thinkphp&&MVC的好书
- php相关
- PHP底层的运行机制与原理