php设计模式 适配器模式
2016-02-29 15:55
507 查看
适配器模式,可以将截然不同的函数接口封装成统一的API;
应用举例,PHP的数据库操作有Mysql、Mysqli、pdo三种,可以用适配器模式统一成一致,类似的场景还有cache适配器,将memcache、redis,file,apc等不同的缓存函数统一成一致。
IDatabase.php
Mysqli.php
Pdo.php
index.php
还可以参考 http://www.phppan.com/2010/07/php-design-pattern-10-adapter/
应用举例,PHP的数据库操作有Mysql、Mysqli、pdo三种,可以用适配器模式统一成一致,类似的场景还有cache适配器,将memcache、redis,file,apc等不同的缓存函数统一成一致。
IDatabase.php
<?php namespace Baobab; interface IDatabase{ function connect($host, $user, $passwd, $dbname); function query($sql); function fetch_result($result); function close(); }
Mysqli.php
<?php namespace Baobab\Database; use Baobab\IDatabase; class Mysqli implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname){ $conn = mysqli_connect($host, $user, $passwd, $dbname); mysqli_set_charset($conn, 'utf8'); $this->conn = $conn; } 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.php
<?php namespace Baobab\Database; use Baobab\IDatabase; class Pdo implements IDatabase{ protected $conn; function connect($host, $user, $passwd, $dbname){ $conn = new \PDO("mysql:dbname=$dbname;host=$host", $user, $passwd); $this->conn = $conn; } function query($sql){ return $this->conn->query($sql); } function fetch_result($result){ } function close() { unset($this->conn); } }
index.php
$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();
还可以参考 http://www.phppan.com/2010/07/php-design-pattern-10-adapter/
相关文章推荐
- 深入解析thinkphp中的addAll方法
- php实现socket
- vsftp出现cannot change directory问题的解决方法
- mac 环境下laravel 5.1框架与数据库的连接和配置问题
- 远程获取文件大小
- phpStorm debug
- php上传文件类型大全
- Yii2权威指南中文版及众包翻译平台
- Win7 64bit系统安装matplotlib
- WiFi Auto DFS & TPC无线自动换频与功率调整技术应用解说
- CInternetSessio和CFtpConnection连接FTP
- 搭建FTP服务器
- 解决/usr/bin/env: php: 没有那个文件或目录
- yii2 pjax使用
- 在编译php事务时候出现如下错误,具体原因不知,不过解决了
- LNMP-PHP5.3.27和MySQL分开安装在两台机器
- php实战课程dedecms编程1
- PHP计算两个GPS点之间的距离
- PHP -- Perl风格正则表达式
- php面向对象知识点整体