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面试题(对属性或方法的访问控制)
Sep 13 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 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随机取mysql记录方法小结
2014/12/27 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
php和asp语法上的区别总结
2019/05/12 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
美容师的职业规划书
2013/12/27 职场文书
应届生如何写自荐信
2014/01/05 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
高中生家长寄语大全
2014/04/03 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL