php适配器模式简单应用示例


Posted in PHP onOctober 23, 2019

本文实例讲述了php适配器模式简单应用。分享给大家供大家参考,具体如下:

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

示例:

//假设使用php开发了一个天气接口
class Weather{
  public static function show(){
    $info = array(
      'temperature' => '25°C',
      'wind' => '西北风3~4级',
      'weather' => '晴',
      'PM2.5' => 60
    );
    return serialize($info);
  }
}
//PHP客户端调用
$msg = Weather::show();
$msg_arr = unserialize($msg);
echo $msg_arr['weather'];
//这时,如果java、python也要来调用天气接口,
//但是不识别串行化后的字符串,但是又不能修改旧接口和旧php的调用
//这时候可以用一个新的类继承,也就是适配器模式,来修改返回的数据格式为json
class WeatherAdapter extends Weather{
  public static function show(){
    $info = parent::show();
    $info_arr = unserialize($info);
    return json_encode($info_arr);
  }
} 
//java、python就可以使用返回的json进行使用
$msg = WeatherAdapter::show();

运行结果:

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php代码优化及php相关问题总结
Oct 09 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
Cakephp 执行主要流程
Mar 24 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 #PHP
laravel 创建命令行命令的图文教程
Oct 23 #PHP
php桥接模式应用案例分析
Oct 23 #PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 #PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 #PHP
基于laravel缓冲cache的用法详解
Oct 23 #PHP
PHP实现简单登录界面
Oct 23 #PHP
You might like
php入门小知识
2008/03/24 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
医学生自荐信范文
2013/12/03 职场文书
家长写给孩子的评语
2014/04/18 职场文书
党员活动日总结
2014/05/05 职场文书
网吧消防安全责任书
2014/07/29 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android